'''
1-变量的作用域:
0- 全局变量,可以再函数内部被引用!
1-局部变量:函数内部--只能在函数里面使用,在函数外部不能使用
2-全局变量:函数外
3-在函数内部修改全局变量:global x
2-缺省参数:
1-在函数定义的时候,给了初始值 def func(a,b,c=0)
2-c这个参数,我在函数调用的时候可以不传值,就是默认值。如果传,那就是传的值
3-定义参数的时候,可缺省可以放在必填前面吗? 不能
SyntaxError: non-default argument follows default argument
4- 案例:
def func(score,sex='M'):
if score > 60:
print(sex+'--及格!')
else:
print(sex+'--不及格')
func(80,'W')
3-可变数量参数:(必填,可缺省,可变数)----写法正确--print
1-数量可变!:可以n个 也可以0个
2- def calc(*numbers):
3-type(numbers)
4-如果传值的是元组/列表--用*展开!
5-是个元组
6-建议定义顺序: 必填,可缺省,可变数量
4-关键字可变数量:--dict
1-关键字
2-可变数量
3-**d
4-是个字典类型
5-传值:键值对
6-传入字典: **字典---展开 {1:100,2:200} 1=100 2=200 一定是str
7- **展开的话,key一定是string----TypeError: func() keywords must be strings
总结:必填参数、缺省参数、可变参数和关键字参数
'''''
'''
1- 必填一定在可缺省的前面--语法规定
2- 缺省参数:
1- 不给实参---就默认初始值
2- 传实参----实际传入的参数
3- 必填参数在可缺省的前面!!!
def print(self, *args, sep=' ', end='\n', file=None)
file, mode='r'
3- 可变数量参数:
1- 数量可变--数量不定!!!--可以是N个
2- * 的作用
1- 在形参里面---包装一个元组
2- 在实参里面---展开作用
4- 关键字可变数量:
1- **d
2- func(1,2,3,4,5,6,"abc",**dict1)---dict1的key都是str
'''
'''
1- 必填一定要在可缺省前面:SyntaxError: non-default argument follows default argument
2- 当def getSum(a,*inList,b=100,**c) 我们需要将一个字典进行传入,那么这个字典的keys
一定是str,否则 TypeError: getSum() keywords must be strings
'''
'''
1- 必填参数:def func(a,b,c):#函数定义的时候只是变量名--必填形参
2- 可缺省参数:def func(a,b,c=100)---
1- 概念:
1- 函数调用的时候传入的一个c的值---以实际传入的为准
2- 函数调用的时候不传入的一个c的值---以默认(定义的时候)的为准
2- 作用:
1- 方便省事
2- 这个默认值一般考虑到调用者大部分时候的---使用的场景(值)
3- 位置:
可缺省参数----在必填参数之后
3- 可变数量参数:
1- 引入:虽然可缺省的参数可以代码带来省事效果--但是有个数的限制
2- 解决当前困境:
成功案例:print(没有个数限制)
3- 定义:
1- def func(a,*args,c=3):
2- 封装成一个元组形式
3- 数量可以是 0 个
4- * 封装元组的效果
4- 定义格式:
建议:定义函数参数的时候:必填、可变数量、缺省参数
5- 函数调用--如果需要传入一个元组类型数据:
* 元组 --展开的效果
4- 关键字可变数量参数:
1- 概念:
1- def func(a,c=3,*b,**kwargs):
2- ** 封装一个---字典(键-值)
3- 传入形式: 变量 = 值
2- 作用:
如同字典的效果:方便查找
3-函数调用时候我们需要把一个完整字典传进去
**字典名:键名一定是字符串
汇总:定义字典的键名一般都用字符串
'''
# ----------变量作用域-------------------------
x = 2 # 在一个模块(.py) 叫全局变量:在他定义后的所有代码都可以使用它
def func():
x= 9 # 在函数里面的变量--局部变量
print('this x is out of func---1--: ',x)
func()
print()
print('this x is out of func---1--: ',x)
# ----------缺省参数-------------------------
def get_sum(start,end):
i = start
sumData = 0
while i <=end:
sumData +=i
i +=1
return sumData
print(get_sum(1,1000))
def func(a,b=0): # 必填参数
print(a,b)
func(100)
# ----------可变数量参数-------------------------
# * 函数定义---封装一个元祖
def func(a,*b,c=0):
print(a,b,c)
func(10,20,30)
def get_sum(*inList):
sumData = 0
print(inList)
for one in inList:
sumData += one
return sumData
print(get_sum(*[1,2,3,4,5,6]))#在函数调用时候 *
#3- **关键字可变数量参数---封装成一个字典:在你需要传入的参数以字典形式存储--可以用
def func(*args,**kwargs):
print(args,kwargs)
# func(1,2,3,name = 'tom',age = 20)
dict1 = {'name':'tom','age':20}
func(1,2,3,**dict1)#函数调用时候 ** 展开字典
#-------------------------------------------
def func(a,b,c=0,*args,**kwargs):
print(a,b,c,args,kwargs)
func(1,2,3,'a','b',name = 'tom',age = 20)
def func2(name,age,gender):
print(name)
print(age)
print(gender)
def func1(*args,**kwargs):
func2(*args,**kwargs)
func1('a',18,'boy')
Python:再识函数
最新推荐文章于 2023-04-29 10:00:00 发布