今日内容:

一、函数参数

  • 1.形参与实参定义
  • 2.实参分类
  • 3.形参分类
  • 4.可变参数的整体使用

一、形参与实参定义

def fn(参数们):
pass
1.1 形参
定义函数,在括号内声明的变量名,用来接外面传来的值
1.2 实参
调用函数,在括号内传入的实际值,值可以为常量,变量,表达式或三者的组合
注:
1.形参随着函数的调用而产生,随函数调用结束而销毁(有特例)
2.在函数的外部不能直接使用函数的形参,原因:函数调用结束后,形参会被销毁
3.外部产生了的变量,内部可以使用
4.在函数调用()中出现的参数(外界实际存在的值):实参
5.调用函数时,实参可以有常量,变量,表达式或三种的组合

二、实参分类

2.1 位置参数
不用明确形参名的传参方式,一定按照位置给形参(必须按照顺序)

def fn1(a, b, c):
print(a, b, c) # 位置实参:必须按照顺序
fn1(10, 20, 30)
fn1(30, 20, 10)
2.2 关键字参数
必须明确形参的名字和为形参传值,可以不按照位置(可以不按顺序传递,形参按名字取值)

def fn1(a, b, c):
print(a, b, c)
# 关键字传参:可以不按照顺序传递,形参按名字取值
fn1(a=10,b=20,c=30)
fn1(c=30,b=20,a=10)
2.3 二者混用
1.关键字实参必须出现在位置实参之后
2.多个位置实参按位置传参
3.关键字形参从关键字实参处拿值,可以不用按照指定顺序 # 两者混用:关键字实参必须出现在位置实参之后
def fn2(a, b, c, d, e, f):
print(a, b, c, d, e, f) fn2(10, 20, 30, e=100, f=500, d=200) ps: 实参的作用:为形参传递值

三、形参分类

3.1 位置形参:
可以由位置实参或关键字实参来传值

# 位置形参
def fn3(a,b,c):
print(a,b,c)
fn3(1,2,3)
3.2 默认形参:
具有默认值,用 '=' 进行赋值,可以是 位置实参与关键字实参,还可以不传值(采用默认值)

# 默认形参具有默认值,用 = 进行赋值
def fn4(a=10,b=20):
print(a,b) # 默认形参可以由 位置实参 与 关键字实参 来传值,还可以不用传值
fn4(20,30)
fn4(a=200,b=300)
fn4(100)
fn4(b = 100)
3.3 可变长位置形参:
只能由位置实参来传值

# 可变长形参只能由 位置实参 来传值
def fn6(a,b,*args):
print(a,b)
print(args)
fn6(1,20,30,40,50)
3.4 无初值关键字形参:
必须由关键字实参来传值,出现在 * 后的都是关键字形参
def fn7(a,b,*,c,d):
print(a,b)
print(c,d)
fn7(1,20,c=30,d=40)
3.5 有初值关键字形参:
可以由关键字实参来传值,也可以不传值

def fn8(a,b,*,c=10,d=20):
print(a,b)
print(c,d)
fn8(1,20) # 有初值关键字形参,不传参数,则输出默认值
3.6 可变长关键字形参:
与无初值关键字形参类似,同样需要传值

def fn(*, a, b=20, c, **kwargs):
print(a, b)
print(kwargs)
fn(d=40, e=50, a=10, c=30) # 以关键字形式传入实参,输出 字典类型
注:
1.各种形参出现的先后 :
位置形参 - 默认形参 - 可变长位置形参 - 无 | 有初值关键字形参 - 可变长关键字参数 2.可变长形参会以元组形式接收位置形参与默认形参未接收完的所有传入的位置实参 3.可变长关键字形参:
用来接收被没有被关键字形参接收玩的关键字形参,也只能由关键字实参来传值,用字典来存放数据 ps:可变长形参只能接收位置实参的值,位置实参还必须在关键字实参前,导致默认形参只能由位置实参来传值 重点:可变长位置形参整体赋值

四、可变参数的整体使用

# 可变长位置形参整体赋值
def fn7(*args):
print(args) fn7(1,2,3,4,5,6) # 单列集合(保护字符串)将该变量进行 打散 传值
# 打散
def fn8(*args):
print(args)
ls = [1,2,3,4,5]
fn8(ls) # ([1, 2, 3, 4, 5],)
fn8(*ls)
# 将ls 打散为1,2,3,4,5 再传值 => (1,2,3,4,5,)
# 可以理解为,将数组的所有值全部赋值给形参 # ---关键字形参------------ # 整体赋值
dic = {'name': 'Owen', 'age': 18}
def fn1(**kwargs):
print(kwargs)
fn1(**dic) dd = {
'k1': [1, 2, 3, 4, 5],
'k2': {"name":"Bob"}
}
fn1(**dd) def fn2(*args):
print(args)
ll = [1, [1, 2], {"name":"Bob"}]
fn2(*ll) # (1, [1, 2], {"name":"Bob"})

Python 入门基础9 --函数基础2 实参与形参的更多相关文章

  1. Python入门篇-生成器函数

    Python入门篇-生成器函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.生成器概述 1>.生成器generator 生成器指的是生成器对象,可以由生成器表达式得到, ...

  2. Python入门篇-匿名函数

    Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...

  3. python之旅:函数基础

    一.引子 1.函数是什么 用函数与不用函数 #1.代码的组织结构不清晰,可读性差 #2.遇到重复的功能只能重复编写实现代码,代码冗余 #3.功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一 ...

  4. Python入门-内置函数一

    什么是内置函数?就是python给你提供的拿来直接用的函数,比如print,input等等,截止到python版本3.6.2 python一共提供了68个内置函数,他们就是python直接提供给我们的 ...

  5. python中函数定义之实参、形参

    一般在函数的定义中,会有一类变量---形参,它是函数完成其工作的一项信息.实参往往是调用函数时传递给函数的信息.我们在调用函数时,将要让函数使用的信息放在括号内.例如定义一个函数def greet_u ...

  6. python3基础(七)函数基础

    Function 函数是一段组织好的能够实现特定功能或者逻辑的代码块,函数代码在文件执行时读入内存并不执行,在调用函数时执行,简单来说是把一段代码封装给一个函数名(可以用变量的概念去理解,即把一段代码 ...

  7. Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器

    今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...

  8. Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型

    今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...

  9. Python 入门基础12 --函数基础5 匿名函数、内置函数

    今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...

随机推荐

  1. 1085. Perfect Sequence (25)-水题

    #include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...

  2. Beta任务项录入

    今天PM把任务项整理写入TFS中,明天开始正式开发工作:

  3. Alpha版阶段项目总结

    一,设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 针对铁道大学大学生,增加他们的社交范围.我们的软件定义很清楚.对典型用户和典型场景有清晰的描述 ...

  4. mysql 列转行处理

    CREATE TABLE `table1` ( `id` ) DEFAULT NULL, `name` ) CHARACTER SET utf8 DEFAULT NULL ) ENGINE=MyISA ...

  5. bootstrap响应式布局列子

    <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...

  6. 2013长春网赛1001 hdu 4759 Poker Shuffle

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4759 题意:有一堆2^n的牌,牌原先按(1,2,....k)排序,每一次洗牌都将牌分成两种情况:(1, ...

  7. ThreadLocal变量

    什么是ThreadLocal变量?ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多.可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副 ...

  8. BZOJ5461 PKUWC2018Minimax(概率期望+线段树合并+动态规划)

    离散化后,容易想到设f[i][j]为i节点权值为j的概率,不妨设j权值在左子树,则有f[i][j]=f[lson][j](pi·f[rson][1~j]+(1-pi)·f[rson][j~m]). 考 ...

  9. 学习Spring Boot:(十一) 自定义装配参数

    前言 SpringMVC 中 Controller 中方法的参数非常灵活,得益于它的强大自动装配,这次将根据上次遗留下的问题,将研究下装配参数. 正文 SpringMVC中使用了两个接口来处理参数: ...

  10. 安装hadoop1.2.1(参考hadoop实战第二版)

    准备: 安装jdk和ssh. 1. 官网下载hadoop1.2.1 hadoop-1.2.1.tar.gz http://hadoop.apache.org/releases.html 2. 解压到/ ...