函数名称空间与作用域
-
-
匿名函数与列表生成式等知识补充
- 三元表达式
-
函数名称空间
名称空间: 存放变量与值绑定关系的地方 三大分类 1.内置名称空间 python解释器启动立刻创建结束立刻销毁 2.全局名称空间 伴随python文件的开始执行/执行完毕而产生/回收 3.局部名称空间 函数体代码运行产生结束销毁 # 加载顺序:内置名称空间 > 全局名称空间 > 局部名称空间

作用域
作用域: 域指的是范围,作用域指的是作用的范围 二大类 1.全局作用域 内置名称空间 全局名称空间 2.局部作用域 局部名称空间 "" 作用域的查找顺序一定要先明确你当前在哪 "" 1.如果当前在局部名称空间 局部名称空间 全局名称空间 内置名称空间 2.如果当前在全局名称空间 全局名称空间 内置名称空间 3.如果当前在内置名称空间 内置名称空间 #取值顺序:局部空间 > 全局空间 > 内置空间

关键字global
# 如果想在局部修改全局名称空间中的名字对应的值
可以使用global关键字

小练习
name = 'jack' def func1(): name = 'jason' def func2(): name = 'kevin' def func3(): name = 'tony' func1() func2() func3() print(name)

x=1 def outer(): x=2 def inner(): x=3 print('inner x:%s' %x) inner() print('outer x:%s' %x) outer()

匿名函数 即没有函数名的函数 语法结构 lambda 形参:返回值 # 匿名函数一般不单独使用 需要结合内置函数/自定义函数等一起使用
匿名函数主要用于一些比较简单的业务逻辑中 减少代码量
l = [1, 2, 3, 4, 5, 6, 7] res = map(lambda x: x + 10, l) print(list(res)) def index(x): return x + 10 res1 = map(index,l) print(list(res1))

l1 = [11, 22, 33, 44, 55, 66, 77, 88] # 将列表中每个元素加一 new_list = [] for i in l1: new_list.append(i+1) print(new_list) # 列表生成式 new_list = [i + 1 for i in l1] print(new_list)
name_list = ['jason', 'kevin', 'tony', 'oscar'] # 将列表每个元素后面加上_NB的后缀 new_list = [] for name in name_list: new_list.append(name + '_NB') print(new_list) # 列表生成式 new_list1 = [name+'_NB' for name in name_list] print(new_list1)

l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99] # 筛选出加一之后大于60的元素 new_list = [] for i in l1: if i+1 > 60: new_list.append(i) print(new_list) # 列表生成式 new_list1 = [i for i in l1 if i+1 > 60] print(new_list1)

# 语法结构 A if 条件 else B
当if后面的条件为True的时候使用A 为False使用else后面的B

# 什么是模块与包
具有一定功能的代码集合
可以是py文件 也可以是多个py文件的组合即文件夹(包)
# 导入模块的本质
会执行模块内代码并产生一个该模块的名称空间
将代码执行过程中的名字存放该名称空间中
然后给导入模块的语句一个模块名 该模块指向模块的名称空间
'''重复导入相同的模块 只会执行一次'''

例子
b.py import aaa aaa.py name = 'tom' def index(): pass

导入模块的两种句式
1.import 模块名 可以通过模块名点出所有的名字 2.from 模块名 import 子名1,子名2 只能指名道姓的使用import后导入的子名并且还存在冲突的风险 # from句式主要用于模块与当前文件不在同一级目录下使用
# 如果模块名较长或者不符合你的看法 可以起别名
import asjdkjkasdjaskdkasdasdjsjdksadksajdkasjd as ad
from 文件夹多层路径 import f1 as fff
"""时间戳:是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒"""
import time
1.print(time.time()) # 获取当前时间的时间戳
2.print(time.strftime('%Y-%m-%d')) # 年月日
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 年月日加时分秒
3. print('该睡了')
time.sleep(3)
print('睡醒了') # 休眠状态
4. def index():
print('123')
time.sleep(3)
print('哈哈哈')
# 统计index函数执行的时间
5. start_time = time.time()
index() end_time = time.time()
print(end_time - start_time)
# 增加或返回时间




浙公网安备 33010602011771号