1,定义
def 函数名(参数列表):
函数体
2.传值
传递的是可变类型,值将被改变
传递的是不可变类型,值被复制了一份传入函数,原有值不变
def change(a):
a += 1
return a
b = 10
change(b)
print(b) # 输出10
def change2(list):
list.append(33)
list.append(44)
list = [11, 22]
change2(list)
print(list) # [11, 22, 33, 44]
3.参数
关键字参数 ,允许函数调用使用关键字参数来确定传入的参数值
def printinfo(name, age):
"打印任何传入的字符串"
print("名字: ", name)
print("年龄: ", age)
return
# 调用printinfo函数
printinfo(age=50, name="runoob")
'''
名字: runoob
年龄: 50
'''
不定长参数
#加了1个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数
# 可写函数说明
def printinfo(arg1, *vartuple):
"打印任何传入的参数"
print("输出: ")
print(arg1)
print(vartuple)
# 调用printinfo 函数
printinfo(70, 60, 50)
'''
70
(60, 50)
'''
#加了两个星号 ** 的参数会以字典的形式导入。
def printinfo(arg1, **vardict):
"打印任何传入的参数"
print("输出: ")
print(arg1)
print(vardict)
# 调用printinfo 函数
printinfo(1, a=2, b=3)
'''
输出:
1
{'a': 2, 'b': 3}
'''
#参数中星号 * 可以单独出现,调用的时候必须传入关键字
def f(a,b,*,c):
return a+b+c
print(f(1,2,c=10))
# global,nonlocal关键字
a, b, c = 0, 0, 0 # 这是一个全局变量
global 和 nonlocal关键字
def sum():
# 返回2个参数的和."
global b # 声明变量
a = 1
b = 1
c = 1
def kk():
nonlocal c # 声明变量 外部变量
c = 2
kk()
print(c) # 2
sum()
print(a) # 0
print(b) # 1