IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 17函数进化内容 -> 正文阅读

[Python知识库]17函数进化内容

一、作用域(全局变量、局部变量)

1.作用域:就是作用范围, 按照生效范围来看分为全局作用域和局部作用域。

?全局变量:当前py文件内都能使用的变量(函数内外都能获取)。

局部变量:只能在函数内部使用的变量(函数外部不能获取)。

函数内部(局部变量a)能对全局变量重新赋值吗?

a = 10  # 全局变量
def add():
    a = 20  # 局部变量(企图对全局变量重新赋值)
    print(a,"局部变量a")
add()
print(a,"全局变量a")

直接赋值很显然是不行的,这时该怎么办?接着往下走!

2.global关键字

如果我们想在函数内部对全局变量进行赋值,就要用到一个关键字:global

这样就可以修改全局变量了。

作用:声明该变量是全局变量(可直接对全局变量进行修改)

a = 10  # 全局变量
def add():
    global a
    a = 20  # 局部变量(企图对全局变量重新赋值)
    print(a,"局部变量a")
add()
print(a,"全局变量a")

3.nonlocal关键字

在函数嵌套中也存在作用域,例如第一层函数定义的局部变量,第二层是无法直接进行重新赋值的,想要在函数嵌套内修改上一级局部变量就需要用到nonlocal关键字。

nonlocal关键字只会在函数内部找上一级,如果找不到就会报错。

1.这是没有使用nonlocal关键字的:相当于又定义了一个新变量。

a = 10  # 全局变量
def add():
    a = 20  # 局部变量(企图对全局变量重新赋值)
    def bdd():
        a = 30
        print("第二层局部变量a:",a)
    bdd()
    print("局部变量a:",a)
print("全局变量a",a)
add()

??2.这是使用过nonlocal关键字的:直接修改了上一级的局部变量。

a = 10  # 全局变量
def add():
    a = 20  # 局部变量(企图对全局变量重新赋值)
    def bdd():
        nonlocal a
        a = 30
        print("第二层局部变量a:",a)
    bdd()
    print("局部变量a:",a)
print("全局变量a",a)
add()

二、匿名函数:lambda

介绍:匿名函数其实也是函数,只不过匿名函数定义的语法和作用不一样。

作用:将函数赋值给变量名,如果想要调用匿名函数就直接调用变量名即可。

格式:函数名 = lambda 参数:返回值

小练习:

"""
编写一个函数,计算两个数的和
1.用普通函数实现
2.用匿名函数实现
"""
# 普通函数:
def funa(a,b):
    print(a+b)
funa(1,2)

# 匿名函数:
funb = lambda a,b:print(a+b)    # 函数名 = lambda 参数:返回值
funb(1,2)

# if 和 匿名函数实现三目运算:
lan = lambda a,b: a if a>b else b    # if a>b return a else return b
print(lan(1,2))     # 函数要传参

三、内置函数

什么是内置函数?

内置函数就是python自带的函数。(例如:input()、print()这类函数)

下面我们挑几个常用函数:zip()map()reduce()filter()

zip():拉链函数:把多个可迭代对象一一对应打包成一个元组格式的对象(<zip object at 0x000002071F1EB5C0>)。如果想要查看该数据需要转换数据类型。

????????转换格式:数据类型(zip( l1 , l2 ))?

????????注意:如果几组可迭代对象参数个数不一致则会忽略多出的参数。

# zip()
l1 = [1,2,3,4,5,6,7,8,9]
l2 = ["a","b","c","d","e","e","f","g","h"]
zip_1 = zip(l1,l2)  # 将两个列表里的数据一一对应并打包。
print(zip_1)    # 运行结果:<zip object at 0x000002071F1EB5C0>
print(list(zip_1))  # 转换格式:列表(zip(l1,l2))     

运行结果:

?

map():映射函数:将可迭代对象以实参方式传输到我们定义的函数中进行处理,之后会得出一个新的值<map object at 0x000001E876F62BB0>。如果想要查看该数据需要转换数据类型。

# map()映射函数
l1 = [1,2,3,4,5,6,7,8,9]
def a(a):   # 函数名(形参)
    return a**2

print(map(a,l1))    # 格式:map(函数名,可迭代对象)
print(list(map(a,l1)))  # 查看方式:转换数据类型(map(函数名,可迭代对象))

运行结果:

?

该函数需要从functools库中导入后才能使用。

reduce():将可迭代对象中的第一个参数和第二个参数先进行运算将其结果与第三个参数再进行运算。例:li = [1,2,3,4] (1+2=2)得到参数1?,将参数1(1+2的值)与参数2(3)进行运算以此累计到可迭代对象最后一位。

格式:from functools import reduce?

reduce(函数名,可迭代对象)

# reduce():
from functools import reduce
l1 = [1,2,3,4]
def b(a,b):
    return a + b
print(reduce(b,l1))

运行结果:

?

filter() :函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

# filter()
l1 = [1,2,3,4,8,9,10,20,30,40,15,18,]
def c(a):
    return a>10     #返回>10的参数 
print(list(filter(c,l1)))   # 格式和上面一样

运行结果:

?

eval():将数据还原成原数据格式。

例:l_1 = “[1,2,3,4]”这是个数据现在是字符串,eval(l_1)以后将会变成列表格式。因为这个数据原本是列表,只不过被引号盖住了所以成了字符串。eval()函数作用就是还原数据格式。

# eval()
l1 = "[1,2,3,4]"
print(type(l1))
print(type(eval(l1)))

运行结果:

四、装包和拆包

装包:把参数包装成一个集合,称之为”装包”

拆包:把集合参数,再次分解成单独的个体,称之为”拆包”

# 装包和拆包
set_l = 1,2,3,4     # 装包
print(set_l)
a,b,c,d = set_l     # 拆包
print(a,b,c,d)

运行结果:

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:30:34  更:2022-03-24 00:31:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:58:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码