Python:再识函数

'''
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')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值