python函数与模块入门

函数名称空间与作用域

名称空间

存放变量与值绑定关系的地方。一共分成三部分。

内置名称空间

python解释器启动立刻创建结束立刻销毁。

全局名称空间

伴随python文件的开始执行/执行完毕而产生/回收。

局部名称空间

函数体代码运行产生结束销毁。

加载顺序:内置名称空间 > 全局名称空间 > 局部名称空间

 

作用域

全局作用域

包含了内置名称空间和全局名称空间。

局域作用域

包含了局域名称空间。

 

查找顺序

作用域的查找顺序一定要先明确当前在哪个空间。

如果当前在局部名称空间:

那么顺序就是:从局部名称空间,到全局名称空间 ,再到内置名称空间

如果当前在全局名称空间

那么顺序就是:从全局名称空间,到内置名称空间。

如果当前在内置名称空间

那么就只能在内置名称空间中查找。

PS:查找顺序是单向的,不能反向。

 

 

关键字 global

虽然顺序不能变动,但是可以提高变量的"地位",通过global就可以完成。

 

上面的问题,只需要简单的一行代码就可以解决。

count = 1
def index():
    global count  # 提升到全局变量,不然会出错
    count = count + 1  
index()
print(count)

 

匿名函数

定义

即没有函数名的函数。

语法结构

lambda 形参:返回值

匿名函数一般不单独使用,需要结合内置函数或者自定义函数等一起使用。

l = [1, 2, 3, 4, 5, 6]
res = map(lambda x: x + 10, l)  # map映射
print(list(res))  # list转换了才能看懂

匿名函数主要用于一些比较简单的业务逻辑中,减少代码量。

 

列表生成式

为了简化代码从而可以使用列表生成式。

 

三元表达式

当if判断仅仅是二选一的情况下,可以使用三元表达式。

 

语法结构

A if 条件 else B

  当if后面的条件为True时使用A

  为False时使用else后面的B

# 当if是二选一时,可以用三元表达式
name = input('username>>:')
res = 'ok' if name == 'jyb' else 'no'
print(res)

 

小补充

当if子代码只有一行的情况下可以整体写在一行,但是不推荐这么写。

 

模块的使用

模块与包

具有一定功能的代码集合,可以是py文件,也可以是多个py文件的组合即文件夹(包)。

 

导入模块的本质

会执行模块内代码并产生一个该模块的名称空间,然后将代码执行过程中的名字存放该名称空间中

接着给导入模块的语句一个模块名,该模块指向模块的名称空间。

 

导入模块的两种句式

import 模块名

可以通过模块名点出所有的名字。

from 模块名 import 子名1,子名2

只能指名道姓的使用import后导入的子名并且还存在冲突的风险。

from主要用于模块与当前文件不在同一级目录下的时候。

 

内置模块之时间模块

time

时间戳:从1970年1月1日到程序运行时的秒数。

import time
print(time.time())  # 1629346093.9096103
"""时间戳:1970-1-1到程序运行时的秒数"""
print(time.strftime('%Y-%m-%d'))  # 2021-08-19
print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 2021-08-19 12:12:17

 

阻塞程序运行的时间:time.sleep

import time
def index():
    print('123')
    time.sleep(3)
    print('哈哈哈')
# 统计函数运行时间
start_time = time.time()
index()
end_time = time.time()
print(end_time - start_time)

 

datetime

import datetime
print(datetime.date.today())
print(datetime.datetime.today())
tday = datetime.date.today()
tdelta = datetime.timedelta(days=7)
tdelta1 = datetime.timedelta(days=-7)
print(tday + tdelta)
print(tday + tdelta1)

 

posted @ 2021-08-19 15:41  wddwyw  阅读(54)  评论(0编辑  收藏  举报