python基础学习Day_04

引言

        今天休息,我就开始学习,学了四天的东西,太爽了我靠,今天学习内容:

  1. 函数
  2. lamda,生成器,迭代器
  3. 模块

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起来!

  • 33
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值