目录python
函数就是一种工具,能够重复调用。函数
经过def
(define)关键字定义函数---> 制造工具工具
调用函数 ---> 使用工具code
def 函数名(): ''' 函数的注释,描述函数体代码的功能 ''' 代码块1 代码块2 函数名() # 使用函数
# 定义函数(制造工具) def index(): # index变量名 print('你好,函数!') # 代码块 index() # index访问函数的内存地址,括号是调用的意思
函数名的命名规范与变量名同样内存
pass
函数先定义后执行,不调用函数,就不会执行函数体代码,只会检测函数体代码的语法规范性it
index() index(name, pwd) # 传入参数执行 index(1, index(3, 2)) # 先执行里面的index
return:是一个函数结束的标志,函数体代码只要执行到return,函数执行结束class
不写return,默认返回none容器
只写return,只有结束函数体代码的效果,返回none变量
写return none,与只写return的效果相同数据类型
return返回一个值:能够将返回的结果,当作一个变量值来使用
return返回多个值
是在函数定义阶段就规定的参数,至关于定义变量时的变量名
是在函数调用阶段传入的参数,至关于定义变量时的变量值
def index(a): # 形参:a至关于变量名,用来接收变量值 print(a) index(a) # 实参:至关于变量值,将值传入形参
经过位置进行传参
def index(a, b): print(a, b) index(1, 3) # 位置参数
指定关键字传参
def index(a, b): print(a, b) index(a=1, b=3) # 关键字参数
位置参数必定要写在关键字参数以前
连用的时候,不要对同一个形参重复赋值
def index(a, b, c, d): print(a, b, c, d) index(1, 2, c=3, d=4) # 位置参数和关键字参数混用
# 定义在* 和**之间 # 在给命名关键字传值的时候必定要以关键字形式传递 # 关键字参数必定不能放在位置参数前面 def index(x, y, z, a=1, *args, b, **kwargs): print(x, y, z) print(args) print(a, b) print(kwargs) index(1, 2, 3,354353, 4342, 3213123, b=222, c=333, d=444)
默认参数:
应用场景:
def reg(username, password, gender): print(f'用户名:{username} 密码:{password} 性别:{gender}) reg('tank', 'dsb', 'male') reg('jason', 'dsb', 'male') reg('engon', 'dsb', 'male') # 将gender的实参定义为male def reg(username, password, gender='male'): print(f'用户名:{username} 密码:{password} 性别:{gender}) reg('tank', 'dsb') # 默认为male reg('jason', 'dsb') reg('engon', 'dsb') reg('胡晨阳', 'dsb', 'female') # femal会去修改male,为femal
官方规定使用*args,可是只要有*就有能够有变长参数的效果
可变长参数:
*args
接收全部溢出的位置参数
**kwargs
:接收全部溢出的关键字参数
# 位置参数 def index(a, b, c, d, *args): print(a, b, c, d, *args) index(1, 3, 4, 5, 6, 7, 8, *[8, 9]) # 关键字参数 def index(a, b, c, d, **kwargs): print(a, b, c, d, *kwargs) index(1, 3, c=4, d=5, e=6)