1、参数位置相关内容
def test(name,age):
print("姓名:%s,年龄:%d"%(name,age))
test("hah",11) 姓名:hah,年龄:11
test(name="cscs",age=50) 姓名:cscs,年龄:50 关键值传参
def test1(name="",age=20):
print("姓名%s,年龄%d"%(name,age))
test1() 姓名,年龄20 传默认值
test1("hh") 姓名hh,年龄20 填一个的话默认给name
test1("111",13) 姓名111,年龄13 都填的话按照填写的来
2、不定长参数 格式:函数名([param1,param2,pamar3...,]*paramX) 带*的paramX可以接受任何数值,但是一个自定义函数只能有一个带*的参数,而且只能放在最右边的参数中国。
*可代表传多个参数
def fruit(name,*weidao):
print(name)
print(type(weidao))
print(weidao)
fruit("ggg",111,222,333)
ggg
<class 'tuple'>
(111, 222, 333)
3、传递任意数量的键值对 函数名([param1,param2,pamar3...,]**paramX) 传递的是键值对
def fruit2(name,**weidao):
print(name)
print(type(weidao))
print(weidao)
fruit2("xigua",aa="aaaa",bb="bbbb")
xigua
<class 'dict'>
{'aa': 'aaaa', 'bb': 'bbbb'}
全局变量和局部变量
j=5
def sum1(i):
i=i+j
return i
i=8
print(sum1(6))
print(j)
print(i)
11 5 8
j为全局变量 函数里的i为局部变量 函数外的i为全局变量
global全局变量
j = 5
k = 3
def sum1(k):
global j
j=j+5
k=4
return k
print(j) 5 全局变量 j=5的值不变
print(k) 3 全局变量k=3的值不变
print(sum1(10)) 4 函数里的k=4局部变量会变
闭包
j=5
def sum1():
k=2
def sum2():
i=k+j
return i
return sum2()
print(sum1())
7
全局变量的范围关系:全局变量>闭包变量>局部变量