Python基础知识(day10)
day10
今日内容
- 函数小高级
- lambda 表达式
- 内置函数
内容详细
-
函数小高级
-
函数名当变量来使用
# 函数赋值 def func(): print(123) # 函数为列表参数 func_list = [func,func,func] func_list[0]() func_list[1]() for item in func_list: item() # 函数为集合元素,会去重 func_list2 = {func,func,func} for itme in func_list2: item() # 函数为字典value,也可以为索引,但是无太大意义 func_list2 = {'k1':'func','k2':'func','k3':'func'} for itme in func_list2: item() func_list3 = [func(),func(),func()] print(func_list3)
-
函数可以当作参数进行传递
def func(arg): print(arg) func(1) func([1,2,3,4]) def show(): return 999 # 函数做参数进行传递 func(show())
# 分析打印的结果 # 示例一 def func(arg): arg() def show(): print(666) func(show) # 666 # 实例二 def func(arg): arg() v1 = arg() print(v1) def show(): print(666) func(show) # 666 666 None # 示例三 def func(arg): arg() v1 = arg() print(v1) def show(): print(666) result = func(show) print(result) # 666 666 None None
-
-
lambda 表达式
用于表示简单的函数,:左侧为参数,右侧为函数体
# lambda 解决简单函数的情况 def func1(a1,a2): return a1+a2 # lambda 简化,:左侧为参数,右侧为函数体 func2 = lambda a1,a2:a1+a2 v = func2(1,2) print(v) # lambda表达式种类,传参方式 func3 = lambda : 100 func4 = lambda x1:x1 +10 func5 = lambda *args,**kwargs: len(args) + len(kwargs)
# 练习1 user_list = [] func = lambda x: user_list.append(x) v1 = func('llk') print(v1) # 没有返回值,默认返回None print(user_list) # 练习2 def func1(x): v = x.strip() return v result = func1('llk') print(result)
注意
列表所有方法基本上都是返回None;字符串的所有方法基本上都是返回新值
-
内置函数
-
自定义函数
-
内置函数
-
len()
-
open()
-
range()
-
id()
-
type()
-
输入输出
- print()
- input()
-
强制转换
- dict()
- list()
- tuple()
- int()
- str()
- bool()
- set()
-
数学相关
-
abs() # 绝对值
-
float() # 转换成浮点型
-
max() # 最大值
-
min() # 最小值
-
sum() # 求和
-
divmod # 两数相除的商和余数
a,b = divmod(1001,5) print(a,b) # 200 1
-
-
进制转换相关
-
bin() # 转换为二进制
-
oct() # 转换成八进制
-
int() # 其他转换从十进制
-
hex() # 转换从十六进制
# 十进制转换成二进制 num = 15 v1 = bin(num) print(v1) # 十进制转换成八进制 v2 = oct(num) print(v2) # 二进制转换成十进制 v1 = '0b1111' result = int(v1,base=2) print(result) # 八进制转换成十进制 v1 = '0o17' result = int(v1,base=8) print(result) # 十六进制转换成十进制 v1 = '0xf' result = int(v1,base=16) print(result)
-
-
-
练习题
# 练习1
'''
分页对数据进行展示
要求:
每页显示10条数据
让用户输入要查看的页码进行显示
'''
user_list = []
for i in range(1,1000):
tem = {"name": "李浪魁%s" %i,"email":"1067676353@qq.com"}
user_list.append(tem)
# 数据总条数
totle_count = len(user_list)
# 每页显示10条
per_page_count = 10
# 总页码数
max_page_num,a = divmod(totle_count,per_page_count)
if a >0:
max_page_num += 1
while True:
pager = int(input("请输入要查看的页码: "))
if pager < 1 or pager > max_page_num:
print("页码不存在,请重新输入范围内的页码!")
# 根据页码取数据
else:
'''
# 第一页: user_list[0:10] -> 0123456789
# 第二页: user_list[10:20]
'''
start = (pager - 1) * per_page_count
end = pager * per_page_count
data = user_list[start:end]
for item in data:
print(item)
# 练习2
# 1字节等于8位
# IP:192.168.12.79 -> 001010010 . 001010010 . 001010010 .001010010
# 十进制转换成二进制的叫法,0-255
'''
ip = "192.168.12.79"
将ip中的每个十进制数转换成二进制数,并通过逗号链接生成一个新的字符串
'''
ip = '192.168.12.79'
# 取出放到列表
ip_list = ip.split('.') # ['192','168','12','79']
# 转换成数字
result = []
for item in ip_list:
result.append(bin(int(item)))
print(','.join(result))
# 练习3
'''
将IP = "192.168.12.79" 中的每个十进制数转换成二进制数
算出的二进制数转换从的十进制数的值
'''
今日总结
- 函数可以当做一个变量:参数传值/当元素嵌套到字典列表中
- lambda表达式
- 内置函数