2020-12-26

@TOC

一、全局变量与局部变量:

全局变量:作用为定义的模块,从定义位置开始直到模块结束,尽量少使用。用global进行声明。局部变全局。

局部变量:在函数体中声明,效率高。

二、参数传递:

本质是从实参到形参的赋值操作

形参与实参指向的同一个地方,故进行同一个操作,得到的实参为进行操作之后的参数。
当形参为可变参数(调用此参数时,系统不会生成新的堆,在原来的堆基础上进行改变,地址不做变动)

b=[10,20]
def f(m):
    print("m:",id(m))
    m.append(30)
f(b)
print('b为:{0}'.format(b))
print("id为:{0}".format(id(b)))

三、传递不可变对象:

当形参为不可变参数(调此参数地址会发生改变,系统会新生成一个堆,有新的地址,对于原来的堆没做改变)
不可变对象包括int、float、字符串、元祖、布尔值。

a=100
def f1(c):
    print(id(c))
    c=c+100
    print(c)
    print(id(c))
f1(a)
print(a,id(a))

在“赋值操作”时,由于不可变对象无法修改,系统会新创建一个对象。

四、参数类型:

位置参数:函数调用时

默认值参数:将函数参数设置好,一般在后面

def f2(a,b,c=10,d=20):
    print(a,b,c,d)
f2(2,6)

命名参数:按照形参名字进行传递

#命名参数
def f3(a,b,c):
    print(a,b,c)
f3(8,9,19) #位置参数
f3(c=10,a=20,b=30) #命名参数

可变参数:可变数量参数
1、*c(一个星号)将多个参数收集到一个“元祖”中

2、**c(两个星号),将多个参数收集到一个“字典”对象中

def f4(a,b,*c):
    print(a,b,c)
f4(8,9,10,11)
def f5(a,b,c,**d):
    print(a, b, c,d)
f5(8,9,10,name='gaoqi',age=15)
q=dict(name='gao',age=18)
print(q)

强制命名参数:在带星号的可变参数后增加的参数,必须为强制命名参数。

五、lambda表达式和匿名函数:

g = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
print(g[0](6),g[1](7),g[2](8))

实际生成一个函数对象,计算结果是函数的返回值

基本语法:

lambda arg1,arg2,arg3,…:<表达式>
例子:
f=lambda a,b,c,d:abc*d

g=[lambda a:a2,lambda b:b3]

print(g0)

六、递归函数:

自己调用自己的函数

1、终止条件,一般用于返回值,不再调用自己

2、递归步骤:把第n步的值和第n-1步相关联

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值