python函数进阶,变量作用域

寻找变量的值时,优先在自己的作用域中找,自己没有的话去父级作用域找

全局变量:在非函数中定义的变量。

局部变量:在函数中定义的变量。函数内部变量在函数执行完后所占空间会销毁。

潜规则:定义全局变量时,要用大写。

global关键字:

global用在函数中表示此变量不是新建的数据,而是全局变量中的那个数据(地址指向相同)

1.函数的多返回值

#函数的多返回值

def info_1():

    return 1,"chne"

date,name = info_1()

print(f"日期是{date}名字是{name}")

2.函数的多种参数使用形式

不定长参数是指可以传入若干个参数,参数个数不固定 

3.

函数作为参数进行传递 

def test_1(add):

    result = add(1,2)

    print(f"结果是{result}")

def add(x,y):

    return x+y

test_1(add)  #进行调用

lambda定义匿名函数,

有名称的函数能根据名称使用多次,无名称的匿名函数只可以临时使用一次,且函数体只能有一行

定义格式:lambda 传入参数:函数体

例如:将上面的代码进行改写

def test_1(add):

    result = add(1,2)

    print(f"结果是{result}")

test_1(lambda x,y:x+y)

动态参数:一个*

def func(*a):
# 动态传参,每次可以传入任意个参数,用户传来的参数会被统一打包为元组
    print(a)
func(1)
func(11,22)
func(11,22,33)

输出:

(1,)
(11, 22)
(11, 22, 33)

两个*:(也可以传入任意个参数,但是只能用关键字形式进行传参)

def func(**a):
# 动态传参,每次可以传入任意个参数,必须以关键字传参,用户传来的参数会被统一打包为字典
    print(a)
func(v1=1)
func(v2=11, v3=22)
func(v4=11, v5=22,v6=33)

输出:

{'v1': 1}
{'v2': 11, 'v3': 22}
{'v4': 11, 'v5': 22, 'v6': 33}

两种方式也可以进行混合,但是关键字传参要在后边

def func(*b, **a):
# 动态传参,每次可以传入任意个参数,会分别打包为元组和列表
    print(b,a)

func(1,2,3, v4=11, v5=22,v6=33)

输出:

(1, 2, 3) {'v4': 11, 'v5': 22, 'v6': 33}

潜规则:在定义动态参数时一个*用args,两个*用kwards

例:

def func(*args, **kwards):
# 动态传参,每次可以传入任意个参数,会分别打包为元组和列表
    print(b,a)

func(1,2,3, v4=11, v5=22,v6=33)

接受任意参数相加后返回结果:

def func(*args):
    nub = 0
    for i in args:
        nub += i
    return nub
print(func(1,2,3))

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值