我爱编程

python语法(六)

2018-04-16  本文已影响15人  Jalynn葸

递归

计算阶乘:
递归函数一定要设置结束条件,否则就会死掉

#encoding:utf-8
#传统方法
i = 1
result = 1
while i<=4:
        result = result*i
        i+=1
print(result)
#递归方法
def jiecheng(num):
        if num>1:
                return num*jiecheng(num-1)
        else:
                return num
num = jiecheng(4)
print(num)

匿名函数

nums = [33,3,2,5,6,44,67,345,98,64];
nums.sort()
print(nums)

nums = [33,3,2,5,6,44,67,345,98,64];
nums.sort()
print(nums)
infor = [{"name":"xjx","age":119},{"name":"fly","age":22},{"name":"liulf","age":23}]
infor.sort(key = lambda x:x['name'])
print(infor)
运行结果:
[2, 3, 5, 6, 33, 44, 64, 67, 98, 345]
[{'age': 22, 'name': 'fly'}, {'age': 23, 'name': 'liulf'}, {'age': 119, 'name': 'xjx'}]

匿名函数作为实参

def test(a,b,func):
        result = func(a,b)
        return result

num2 = test(11,2lambda x,y:x+y)
num = test(11,22)
print(num)

把匿名函数当参数传入,python语言是动态语言

def test(a,b,func):
        result = func(a,b)
        return result
func_new = input("请输入一个匿名函数:")
num = test(11,22,func_new)
print(num)
请输入一个匿名函数:lambda x,y:x*y
242
交换两个变量
#传统方法
a = 4
b = 5
c = 0
c = a
a = b
b = c
print("a = %d,b = %d"%(a,b))
#python特有方法
a = 4
b = 5
c = 0
a,b = b,a
print("a = %d,b = %d"%(a,b))

a是变量,是不可变类型,不能修改

a = 100
def test(num):
        num+=num
        print(num)
test(a)
print(a)
结果:
200
100

a是列表,是可变类型,可以修改

a = [100]
def test(num):
        num+=num
        print(num)
test(a)
print(a)
结果:
[100, 100]
[100, 100]

num = num +num 与num+=num不是一个东西,他们有不同的意思。如例子所示:

a = [100]
def test(num):
        num = num +num
        print(num)
test(a)
print(a)
[100, 100]
[100]
上一篇 下一篇

猜你喜欢

热点阅读