函数

python函数是从下往上找,写完函数要在最后面调用

def MyFirsFunction():
    print('这是我创建的第一个函数')
    print('激动')
MyFirsFunction()

在这里插入图片描述
函数的参数

def MySecondFunction(name):
    print(name+'傻子')
MySecondFunction('滕胖胖')

在这里插入图片描述

def add(num1,num2):
    result = num1 + num2
    print(result)
add(2,3)

在这里插入图片描述
在这里插入图片描述
pycharm里会有提示,要给参数值
return

def add(num1,num2):
     return (num1 + num2)
print(add(2,3))

在这里插入图片描述
加[ ]打印的是列表

def back():
     return [1,'滕胖胖',2.14]
print(back())

在这里插入图片描述

不加[ ]默认打印的是元组

def back():
     return 1,'滕胖胖',2.14
print(back())

在这里插入图片描述

形参和实参
在这里插入图片描述
其中name为形参,只是占据一个参数位置,具体的参数值是实参,因为他是具体的函数值。
函数文档
没打印出来,不知道为啥

def MyFirstFunction(name):
     '函数定义过程中的name是形参'
     print('传递进来的'+name+'叫实参,因为他是具体的参数值')
MyFirstFunction.__doc__

收集参数

def test(*params):
     print('参数的长度是:',len(params))
     print('第二个参数是:',params[1])
test(123,'滕胖胖',2.14,234)

*params是收集参数
在这里插入图片描述
函数变量的作用域
局部变量:其中final_price 是局部变量,定义在discounts函数中,函数结束后即释放。
全局变量:其中old_price,rate,new_price是全局变量,可以在任何位置打印出来,不会报错。

def discounts(price,rate):
     final_price = price * rate
     return final_price
old_price = float(input('请输入商品价格:'))
rate = float(input('请输入商品折扣:'))
new_price = discounts(old_price,rate)
print('打折后的价格为:','%.2f'%new_price)

在这里插入图片描述
如果在函数内部修改全局变量,python会自动创建一个与全局变量名字一样的局部变量进行代替,函数结束后,全局变量仍然的原来的值。不要在函数内部修改全局变量的值。

def discounts(price,rate):
     final_price = price * rate
     old_price = 50
     print('修改后的old_price的值是1:',old_price)
     return final_price
old_price = float(input('请输入商品价格:'))
rate = float(input('请输入商品折扣:'))
new_price = discounts(old_price,rate)
print('修改后的old_price的值是2:',old_price)
print('打折后的价格为:','%.2f'%new_price)

在这里插入图片描述
例题:
在这里插入图片描述

alist = []
def flower():
     for each in range(100,1000):
        if (int(str(each)[0]))**3+(int(str(each)[1]))**3+(int(str(each)[2]))**3==each:
               alist.append(each)
     print(alist)
flower()

在这里插入图片描述
内嵌函数和闭包

def Fun1():
     x = 5
     def Fun2():
          nonlocal x
          x *= x
          return x
     return Fun2()
Fun1()
print(Fun1())

在这里插入图片描述
用nonelocal来声明变量x不是局部变量,仍然看成是全局变量。
lambda表达式

g = lambda x: 2*x+1
print(g(5))

等价于

def ds(x):
     return 2 *x +1
print(ds(5))

也就是lambda后面跟着参数,然后加冒号:,再加返回值。
lambda作用:可以省下函数第一过程,不用考虑命名的问题;简化代码的可读性
BIF
filter()

print(list(filter(None,[1,0,True,False])))

过滤掉非true(或者说是非1)的值
在这里插入图片描述

def odd(x):
     return x % 2
temp = range(10)
show = filter(odd,temp)
print(list(show))

在这里插入图片描述
用lambda实现

g = lambda x:x %2

temp = range(10)
show = filter(g,temp)
print(list(show))

print(list(filter(lambda x:x %2,range(10))))

map映射

print(list(map(lambda x:x*2,range(10))))

在这里插入图片描述

欧几里得算法,实现求最大公约数

def gcd(a,b):
#while b 相当于b≠0时,条件成立,循环得以进行下去
    while b:
        c = a%b
        a = b
        b = c   
    else:
        print('b≠0')
    
    return a
print(gcd(34,0))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值