python函数进阶

斩- 2021-11-29 22:57:09
1作用域
指的是变量生效的范围
1.1 全局变量
函数外部定义的变量,在整个文件中都有效
a = 100
def test1():
    print('test1中a的值:',a)
def test2():
    a = 120
    print('test2中a的值:',a)
test1()
test2()
1.2局部变量
函数内部定义的变量,仅在函数内生效
作用:在函数体内部临时保存数据,当函数调用完成后,就会销毁局部变量
num = 10
def fuana():
    print('num',num)
    def fuanb():
        num1 = 20
        print('num1',num1)
    fuanb()
fuana()

1.3 global()
将变量声明成全局变量
语法格式 global() 变量名
global关键字可以对全局变量进行修改,也可以在函数内声明一个全局变量
num = 10
def fuana():
    print('num',num)
def fuanb():
    global num
    num = 20
    print('num',num)
fuanb()
fuana()、

1.4 nonlocal
将变量声明为外层变量,只能在嵌套函数中使用
只对上一级进行改变

2 匿名函数
基本语法:函数名 = lambda 形参:返回值
调用:结果 = 函数名(实参)
def add(a,b):
    return a+b
res = add(7,9)
print(res)
add = lambda a,b: a + b
res = add(9,10)
print(res)

2.1lambda的参数形式
无参,一个参数
函数名 = lambda 形参:返回值
funa = lambda name:name
print(funa("你是什么"))
默认参数
def funa(a,b = 10):
    return a + b
print(funa(8,2))
funa = lambda a,b:a+b
print(funa(3,2))
为真结果if条件else为假结果
a = 5
b = 6
print("a比b小") if a < b else print("a比b大")
com = lambda a,b:"a比b小" if a < b else "a比b大"
print(com(6,3))

3内置函数
3.1查看所有的内置函数
import builtins
print(dir(builtins))
abs() 返回绝对值
print(abs(-78))
sum()求和
支持的类型:列表,集合,元组
集合的话会先去重再相加
print(sum({6+9}))
min()求最小值
max()求最大值
zip()
将可迭代对象作为参数,将对象中对应的元素打包成一个个元组
li = [1,2,3]
y = ['a','b','c']
for i in zip(li,y):
    print(i)
    print(type(i))

map(func,iter1)    func—函数  iter1--可迭代对象
可以对可迭代对象中的每一个元素进行映射,分别去执行
li = [1,2,3]
def func(y):
    return 4+2*y
print(list(map(func,li)))
lam = lambda y:y+5
print(list(map(lam,li)))

reduce()
对参数对象中的元素进行累计
需要导入一个模块(导包)
作用:先把对象中的前两个元素取出,计算出一个值然后保存,解析下来把这个值当作第三个元素进行计算
需要先导包
from functools import reduce
li2 = [1,2,3,4,5]
函数必须要是有两个参数的函数,对象必须是可迭代对象
def add(x,y):
    return x*y
res = reduce(add,li2)
print(res)

拆包
对于函数中的多个返回数据,去掉元组,列表或者字典直接获取里面数据的过程
tua = (1,2,3,4)
print(tua[2])
a = tua[1]
print(a)
方法一
a,b,c,d = tua
print(a,b,c,d)
对象中有几个元素就要定义几个变量去接收值

方法二
a,*b,c = tua
print(a,b,c)
先把单独的取完,其他剩下的全部都给带*的变量

...全文
43 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-Python 发布问题, 以便更快地解决您的疑问

30,419

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧