引言
今天休息,我就开始学习,学了四天的东西,太爽了我靠,今天学习内容:
- 函数
- lamda,生成器,迭代器
- 模块
1.函数
函数的定义
存在的概念:实现重复的代码块,用来实现单一的功能相关联的代码块。
自定一个函数
1、关键字 def开头:后面跟命名,是否传参用括号显示():函数体
2、传参:一定要把参数写在括号内
3、函数里面的内容,以:冒号为主来进行缩进。
4、函数定义以后,不调用,不执行;直接函数方法名调用。
函数的参数
1、函数的参数,分为形参和实参
形参:形式参数。使用范围是在函数内。
实参:实际参数
2、可变类型参数和不可变类型参数
可变类型:list、dict、 set
不可变类型:str,int,float
3、位置参数
注意:根据位置一一对应,而不是根据变量名
4、关键字参数
注意:跟关键字有关,和位置无关
5、默认值参数
在形参处进行赋值,再次调用后不需要二次传值。如果传值则覆盖之前的值
6、可变长度参数{*args}
转化为元组类型
转化为字典类型{**args}
函数返回值
当两个函数之间,想要互相使用他们的内部变量的时候,就可以用到函数的返回值。
注意:
1、使用return返回值,一定返回内容。
2、返回后,创建新的变量来进行比较。
3、在返回时没有定义返回值,还有一种返回值是隐含的返回值。
4、不知能返回一个值,还能返回多个值。返回的形式是元组
5、当调用该函数时,遇到return,后面的语句则不再执行。
函数作用域
1、L(local):局部作用域,作用范围实在函数内。
2、E(enclosing):函数的嵌套,函数内的函数的作用域。
3、G(global):全局变量,跟模块平级。
4、B(build-in):内建函数。创建一个对象init(
当全部变量和局部变量碰撞的时候,以局部变量为主。
global关键字,先声明全局变量,在进行变量赋值。该变量则升级为全局变量
2.lamda,生成器,迭代器
匿名函数
1、lambda : 函数体
2、lambda x(参数): 函数
3、lambda *args : , **args: 函数体
注意
匿名函数的函数体,只支持单行数据。决定这匿名函数不是特别的常用。处理的代码块比较简单
三元运算:成立 if 判断条件 else 不成立
列表推导式
推导式:[变量 for 变量 in 取值的位置 if的判断类型]
生成器
1、当没有函数介入,只有值的时候。称之为生成器
gen = (i for i in range(5))
2、生成器函数。作用是提高代码运行效率
函数 + yield ------> 生成器:
迭代器
1、可迭代对象(可遍历对象)
str , list , tuple , dict , set , 生成器
2、迭代器:肯定不是用来定义
输出的根据你的指针
总结:迭代对象和迭代器的区别:
1、可用于for循环便利的都是可迭代的对象
2、作用于next()都是迭代器类型
3、list,dict,str可迭代对象,但不是迭代器。iter()强转为迭代器
4、for 循环执行迭代器。本质是循环执行next();
迭代器和生成器
1、生成器可以做所有迭代器能做的事,(生成器包含迭代器)
2、生成器它自身包含next()和iter(),生成更简洁更高效
3.模块
1.模块的引入
from tool import util
# import 导包
# 从包里面去导入某个模块
from tool.util import encrypt as jiami
2.内置模块_math模块
import math
a = 3
b = 4
# 1、做基本的数学运算
print(a+b)
# 2.、幂运算
result1 = math.pow(a,b) # 3的4次方
print(result1)
# 3、平方根
result3 = math.sqrt(100)
print(result3)
# 4、四舍五入,内置函数
result4 = round(3.1415926,2)# 不需要math调用,保留两位小数
print(result4)
# 5、取整,向上取整,向下取整
result5 = math.ceil(9.2) # 向上取整
print(result5)
result55 = math.floor(9.2) # 向下取整
# 6、去一个数的绝对值
result6 = math.fabs(-2)
print(result6)
print(abs(-2)) # 括号内是什么类型,打印出来的结果也是啥类型
#7、最大最小值。max、min
print(max(1, 2, 3, 4))
print(min(1,2,3,5,6))
#8、常量
print(math.pi)
print(math.e)
#9、三角函数
print(math.log(2))
print(math.exp(2))
#10、正弦函数、余弦函数
angele = math.radians(30)
print(math.sin(angele))
print(math.cos(angele))
print(math.tan(angele))
3.内置函数_os模块
import os
# 1、当前文件工作的目录
print(os.getcwd())
# 2.txt、返回指定路径所有的文件,以及文件夹,将文件夹的内容打印出来
print(os.listdir("D:\往事随风\JAVA\pythonProject\pythonProject\day-12"))
# 3、创建多个文件夹
"""
makedirs:一次创建多个文件夹
name:创建目录的路径名称
mode:是什么文件
exist_ok:默认False,如果目录存在创建:FileExistsError
True,创建目录已经存在,不抛出异常
"""
os.makedirs("data2/demo",exist_ok=True)
# # 一次创建单个文件夹
os.mkdir("data2/date3")
# 判断该文件夹是否存在
# if os.path.exists("data2/date4"): # 返回给我们的是True后者False
# print("该文件已存在,不需要二次创建")
# else:
# os.mkdir("data2/date4")
# print("创建成功")
# # print(os.path.exists("data2/date3"))
#
# 删除文件夹 remove
# print(os.rmdir("data2/date3"))
# # 同时删除多个文件夹
# os.removerdirs("data2/date4")
# # 文件夹重命名,不需要在意是否有子类文件夹
# # 名称{通过文件夹}
# os.rename("data1","dataa1")
# # 判断文件夹内是否有文件 -->有返回值
# os.path.exists(" ") #返回给我们的是True或者是False结果
# os.path.isfile("text.txt") # 返回给我们的是True或者是False结果
4.内置函数_sys模块
import sys
# 看一下 sys 版本是什么
print(sys.version)
"""while True:
for i in range(10):
if i == 4:
print("该数字查找成功")
# break # 结束的是for循环
sys.exit(8)"""
print("请输入内容",end ="")
aa = sys.stdin.readline()
bb = input("请输入内容") # input默认换行
print(aa)
print(bb)
# 当前的路径,以及已安装的内置模块和第三方模块
print(sys.path)
5.random模块
import random
# 随机取一个种子
# random.seed(3)
# 随机取一个整数
print(random.randint(1, 10)) # 有返回值对象 , 前后都可以取到
# 生成随机偶数
print(random.randrange(0, 10, 2))
# 随机生成一个浮点数 , 默认是计算机小数的长度 , 最大取不到1
print(random.random())
# 随机生成一个浮点数 返回小数的尾数
print(random.uniform(1.2, 1.9)) # 浮点数根据计算机长度来做定长 , 1之后的数字
# 随机取序列中的某一位数
print(random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
# 从序列中要取数字,要取多少个
print(random.choices([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], k=2))
l1 = ["一等奖", "二等奖", "三等奖", "空奖"]
print(random.choices(l1, weights=[1, 2, 3, 20])) # 出现的概率,数字越大,权重越大,出现的几率越高
# k代表的是,从列表里随机抽取几个元素
print(random.sample(l1, k=1))
# 将列表l1里的数据打乱顺序
random.shuffle(l1)
print(l1)
# 抽奖系统 从指定参与者随机抽取一位中奖的人,把中奖的名字打印出来
# name = ["张三","张四","张五","张六"]
# print(random.sample(name,k=1)[0])
list_person = []
while True:
name = input("请录入参与者的姓名(退出):")
if name == "退出":
break
list_person.append(name)
# 写中奖者名单
if len(list_person) == 0:
print("暂无人参与")
else:
winner = random.choice(list_person)
print(winner)
6.time模块
import time
# 时间戳 , 以秒为单位 从1970年1月1号 0:0:0
t = time.time()
print(t)
# 当前时间被格式化,大约能看懂的
t2 = time.localtime()
print(t2.tm_year)
print(t2.tm_mon)
# 获取当时的时间,格式化为变成能看懂的样式
t3 = time.strftime("%Y-%m-%d %H:%M:%S", t2)
print(t3)
# 常用的方法
# start = time.time()
# t4 = input("请等待5秒钟后按结束...")
# end = time.time()
# print(end - start)
# 格式化本地时间
t5 = time.time()
new_t5 = time.localtime(t5)
print(new_t5)
# 把格式化的时间 区分为字符串的形式 把字符串转化为元组
t6 = time.strptime("2024-05-02 12:25:00","%Y-%m-%d %H:%M:%S")
print(t6)
# 结构化时间 {元组}
t = time.localtime()
print(t)
print(time.asctime(t))
# # 结构化时间戳 {float}
t1 = time.time()
print(t1)
print(time.ctime(t1))
# 当下时间距离晚上12点还有多少时间
结语
今天是python学习者,梦想是月入过万的男人,mai起来!
标签:函数,04,python,random,迭代,time,print,Day,math From: https://blog.csdn.net/wuliwavv/article/details/140425100