day7 python 函数与lambda

# 函数内部定义变量 
def try_to_change(n):
    n="qiziyi"
name = 'laoda'
try_to_change(name)
name     #'laoda'
# 上式原理
name ='laoda'
n = name
n = 'qiziyi'
name  #'laoda'

# 函数内部修改变量
def change(n):
    n[0]='qiziyi'
names=['abc','def']
change(names)
names  #['qiziyi', 'def']
# 上式原理
names=['abc','def']
n=names
n[0]='qiziyi'
names  #['qiziyi', 'def']

# 不修改 创建副本
def change(n):
    n[0]='qiziyi'
names=['abc','def']
change(names[:])
names

# 上式原理
names=['abc','def']
n=names[:]
# n为names的副本
# n is names  false
# n==names  true
n[0]='qiziyi'
names

# 生成斐波那契数列的函数定义和调用 (小于n截止、打印数列)
def fib(n):
    '''生成斐波那契数列小于n时截止'''
    a, b = 0, 1
    while a < n:
        print(a,end=' ')
        a, b = b, a+b
    print()    
fib(1000)
# 为函数和自定义对象动态增加成员
def func():
    print(func.x)  
func.x = 3    
func()
# 删除x
del func.x
# 定义一个函数 输出a和b中的最大值
def printMax(a,b):
    if a>b:
        print(a)
    elif b>a:
        print(b)
    else:
        print('a=b')
print()
printMax(1,2)

# 在函数内部直接修改形参 不影响实参 而是创建了一个新的变量
def addOne(a):
    print(id(a), ':', a)
    a += 1
    print(id(a), ':', a)
v = 3
id(v)
addOne(v)
def addone(a):
    a+=1
    print(a)
h=3
addone(h)

def modify(v): #修改列表元素值
    v[0] = v[0]+1
a = [2]
modify(a)
a

def modify(v, item): #为列表增加元素
    v.append(item)
a = [2]
modify(a,3)
a
def modify(d):#修改字典元素值或字典增加元素
    d['age'] = 38
a = {'name':'Dong', 'age':37,'sex':'Male'}
modify(a)
a
def test(x:int, y:int) -> int:
    '''x and y must be integers, return an integer x+y'''
    assert isinstance(x, int), "x must be integer"
    assert isinstance(y, int), "y must be integer"
    z = x+y
    assert isinstance(z, int), "must return an integer"
    return z
test(1,2)
# test(1,2.0)
def demo(a, b, c):
    print(a, b, c)
demo(3, 4, 5)

# 默认值参数必须放在最右侧
def f(a,b,c=5):
    print(a,b,c)
def say( message, times =1 ):
    print(message * times)
say('hello')
say('hi',7)

# 不指定分隔符默认空格连接
def Join(List,sep=None):
    return (sep or ' ').join(List)
aList = ['a', 'b', 'c']
Join(aList)
Join(aList, ',')

# 默认值参数如果使用不当,会导致很难发现的逻辑错误
def demo(newitem, old_list=[]):
    old_list.append(newitem)
    return old_list  #添加newitem对old_list进行更新
print(demo('5',[1,2,3,4]))   #right
print(demo('aaa',['a','b'])) #right
print(demo('a'))             #right
print(demo('b'))             #wrong

# 改进
def demo(newitem,old_list=None):
    if old_list is None:   
        old_list=[]
    old_list.append(newitem)
    return old_list
print(demo('a')) 
print(demo('b')) 

# 默认值参数
i=3
def f(n=i): #参数n的值仅取决于i的当前值
    print(n)
f()
i=5
f()
f.__defaults__#查看函数默认值参数的当前值

# 可变长度参数
def func_4(a,b,c=4,*aa,**bb):
    print(a,b,c)
    print(aa)
    print(bb)
func_4(1,2,3,4,5,6,7,8,9,xx='1',yy='2',zz=3)
func_4(1,2,3,4,5,6,7,xx='1',yy='2',zz=3)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值