1.作用域
# 1.作用域:全局作用域和局部作用域
# 全局:整个文件的位置都可以使用
# 局部:函数内部可以使用
# 2.局部变量:在函数内部定义的变量
# def test():
# a = 1 # 局部变量:作用范围是在函数内部
# b = 2
# print(a + b)
# test()
# 3.全局变量:在函数外定义的变量;可以在多个函数中使用
# a = 1
# b = 2
# def test():
# print(a + b)
# test()
#
# def test2():
# print(a * b)
# test2()
# 4.全局变量和局部变量名字相同
# a = 10
# b = 20
#
# def test3():
# a = 1 # 理解为定义了一个局部变量,而不是修改全局变量
# b = 2
# print(a + b)
#
# test3()
# print(a)
# 5.global 变量名
# 5.1修改全局变量
# c = 1
# def funa():
# # 标识函数内部不是定义了一个局部变量,而是对全局的修改
# global c
# c = 2
# print('函数中的值:', c)
#
# funa()
# print('函数外的值:', c)
# 5.2 利用global在局部作用域声明一个全局变量
# def funa():
#
# global d, e
# d = 3 # 局部变量--全局变量
# e = 4
# print(d, e)
#
# funa()
#
# print(d, e) # 打印出的是全局变量
# def funb():
# print(d, e)
#
# funb()
# 6.nonlocal:声明外层的局部变量 了解
# 1.用于嵌套函数中,外层和内层函数
# 2.局部变量:函数内定义的变量
# def funa(): # 外层函数
# a = 1 # funa中的局部变量
#
# def funb(): # 内层函数
# nonlocal a # 将fun_a中的值:a 换成 10
# a = 10 # funb中的局部变量
# print('funb中的值:', a)
#
# funb() # 调用内层函数funb
# print('funa中的值:', a)
#
#
# funa() # 调用外层函数funa
# print(a) # nonlocal声明的变量只对局部起作用,离开了嵌套函数,这个变量就无序
# global:可以将局部变量变成一个全局变量
# nonlocal: 可以在内层函数中修改外层变量(这个变量不能是全局变量)
2.匿名函数(lambda函数)
练一练:1、if-else使用 2、求出某个数的平方值
# 1.匿名函数:没有名字的函数
# 语法: 函数名 = lambda 形参:返回值
# 调用: print(函数名(实参))
# 求和函数
def test(a, b):
return a + b
# print(test(3, 4))
# 匿名函数
# funa = lambda a, b: a + b # a,b 就是匿名函数的参数, a+b返回值
# 匿名函数不需要return来返回值,表达式本身结果就是返回值
# print(funa(4, 6))
# 练一练:1、if-else使用 2、求出某个数的平方值
#求平方
sq = lambda x:x*x
sq(3)
# 三目运算: 为真结果 if 条件 else 为假结果
a = 3
b = 4
# 条件:a<b
# print(a) if a < b else print(b)
# we = lambda a, b: print(a) if a < b else print(b)
# we(4, 5)
3.内置函数
# 1.内置函数
# import builtins # 导入模块
# print(dir(builtins)) # 查看所有内置函数
# 1.1 list()
# st = 'abc'
# print(type(st))
# print(st)
# st2 = list(st)
# print(type(st2))
# 1.2 tuple()
# s3 = tuple(st)
# print(s3)
# print(type(s3))
# 1.3 abs() 返回绝对值
# print(4) # 正数
# print(-4) # 负数
# print(abs(-4))
# 1.4 sum() 求和
# li = [1, 2, 3]
# print(sum((1, 2, 3)))
# 1.5 min() 求最小值; max()最大值
# print(max(li))
# 1.6 zip函数 :将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组。
# a = [1, 2, 3, 4]
# b = ['a', 'b', 'c']
# res = zip(a, b)
# print(list(res)) #结果:[(1, 'a'), (2, 'b'), (3, 'c')]
# for i in res:
# print(i)
# 1.7map函数 map(函数名,列表) 因为还没学习可迭代对象,所以用列表举例
# 把参数中的函数依次作用在列表的每个元素上,返回新的列表
# li = [1, 2, 3]
#
# def funa(x):
# return x*2
# print(funa(3))
# mp = map(funa, li)
# print(mp)
# print(list(mp))
# 1.8 reduce() reduce(函数名,列表) # 对参数序列中元素进行累积
# from functools import reduce
# li2 = [1, 2, 3, 4]
#
# def func(x, y):
# return x + y
#
# res = reduce(func, li2)
# print(res)
4.拆包
# 1.9 拆包
# 列表拆包
# li = [1, 2, 3, 4]
# a, b, c, d = li
# print(a, b, c, d)
# a, *b = li
# print(a)
# print(b)
# 元组拆包
# tu = (1, 2, 3)
# *a, b = tu
# print(a)
# print(b)
# 函数拆包
def test():
a = 10
b = 20
c = 30
return a, b, c # 返回多个值,用元组的形式接收
print(test())
# a1, b1, c1 = test()
# print(a1, b1, c1)