20200118--python学习第十一天
Posted limin1027
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20200118--python学习第十一天相关的知识,希望对你有一定的参考价值。
今日内容
函数小高级
lambda表达式
内置函数
内容回顾
1.函数基本结构
2.参数
形参
基本参数:def func(a1,a2):pass
默认值:def func(a1,a2=123):pass 注意:默认值如果是不可变类型,随便玩。可变类型:有坑
无敌:*args,**kwargs
实参:
位置参数
关键字参数
3.返回值
默认返回值:None
特殊情况:返回的元组
def func():
return 1,2,32,4
4.作用域
全局与局部
自己有找自己,自己没有找父级;
子作用域用于只能读取或修改父级的值,不能重新赋值;
NUM = [1,2,3]
def func():
global NUM
NUM =123
func()
5.函数嵌套
def func():
name = ‘oldboy‘
def inner():
print(name)
name = ‘alex‘
inner()
print(name)
func() #输出结果为:alex alex
内容详情
1.函数小高价
a = 123
name = "alex"
nums = [11,22,33,44]
data = nums
def func():
pass
#func = 函数
2.函数名当作变量来使用
def func():
print(1,3,3)
v1 = func
func()
v1()#两个实现过的功能一样,都是调用该函数
#示例二
def func():
print(123)
func_list = [func, func, func] #
func_list[0]()
func_list[1]()
func_list[2]()
for item in func_list:
v = item()
print(v) #请注意该处打印值为None
#示例三 函数还可以作为字典中的元素
def func():
print(123)
def bar():
print(666)
info = {‘k1‘:func,‘k2‘:bar}
info[‘k1‘]() #输出结果为:123
info[‘k2‘]() #输出结果为:666
#示例四 混淆你
def func():
return 123
fun_list1 = [func,func,func]
fun_list2 = [func(),func(),func()]
print(fun_list1) #请注意该处返回的func函数的地址
#[<function func at 0x000001C7B62CE0D0>, <function func at 0x000001C7B62CE0D0>, <function func at 0x000001C7B62CE0D0>]
print(fun_list2)
#输出结果为:[123,123,1223]
info= {
‘k1‘:func,
‘k2‘:func()
}
print(info) #输出结果为:{‘k1‘: <function func at 0x0000020CA36DE0D0>,‘k2‘:123}
3. 函数可以当作参数进行传递
def func(arg):
print(arg)
func(1) #输出结果为:1
func([1,2,3,4]) #输出结果为:[1,2,3,4]
def show():
return 999
func(show) #输出结果为:show函数的内存地址 <function show at 0x00000234D2B2E8B0>
#示例二
def func(arg):
v1 = arg()
print(v1)
def show():
print(666)
func(show) #输出结果为:666 None
#示例三
def func(arg):
v1 = arg()
print(v1)
def show():
print(666)
result = func(show)
print(result) #输出结果为:666 None None
#面试题
def func():
print("花费查询")
def bar():
print("语音服务")
def base():
print("xxx")
def show():
print(‘xxxx‘)
def test():
print(‘xxxxx‘)
info = {
‘f1‘:func,
‘f2‘:bar,
‘f3‘:base,
‘f4‘:show,
‘f5‘:test
}
choice = input("请输入你要选择的功能:")
function_name = info.get(choice)
if function_name:
function_name()
else:
print("输入错误")
4.lambda表达式:用于简单的函数
#lambda表达式
if 1 == 1:
a = 123
else:
a = 245
# #三元运算表达
a = 123 if 1==1 else 245
#请注意lambda表达式,为了解决简单的情况:如
def func(a1,a2):
return a1+100
func = lambda a1,a2 :a1+100
func1 = lambda: 100
func2 = lambda x1:x1*10
func3 = lambda *args,**kwargs: len(args)+len(kwargs)
DATA = 100
func4 = lambda a1:a1+DATA
v = func4(1)
print(v) #输出结果为:101
DATA =100
def func():
DATA = 1000
func4 = lambda a1:a1+DATA
v = func4(1)
print(v)
func() #输出结果为:1001
func5 = lambda n1,n2 :n1 if n1>n2 else n2
v = func5(1111,2)
print(v) #输出结果为:111
#练习题1
USER_LIST= []
def func0(x):
v = USER_LIST.append(x)
return v
result = func0(‘alex‘)
print(result) #输出结果为:None
#练习题2
def func0(x):
v = x.strip()
return v
result = func0(‘ alex ‘)
print(result) #输出结果为:alex
#注意:总结:列表所有方法基本上都是返回None;字符串的所有方法基本上都是返回新值
#练习3
USER_LIST = []
func1 = lambda x :USER_LIST.append(x)
v = func1("alex")
print(v)
print(USER_LIST)
#输出结果为:None [‘alex‘]
#练习题4
func1 = lambda x : x.split("l")
v1 = func1("alex")
print(v1) #输出结果为:[‘a‘,‘ex‘]
#练习题5
func_list = [lambda x:x.strip(),lambda y:y+199,lambda x,y:x+y]
# v1 = func_list[0]("alex")
# print(v1) #输出结果为:alex
#
# v2 = func_list[1](100)
# print(v2) #输出结果为:299
#
# v3 = func_list[2](1,2)
# print(v3) #输出结果为:3
5.内置函数
1.自定义函数
2.内置函数
其他:len/open /range/id/type/
输入输出:input/print
强制转换:int()/str()/bool()/list()/tuple()/dict()/set()
数学相关:abs()绝对值/float()转换为浮点类型小数/max()找到最大值/min()找到最小值/sum()求和/divmod() 两数相除得到的商与余数
divmod()函数示例:
#divmod 两数相除得到的商与余数
# a,b = divmod(1001,5)
# print(a,b)
# #输出结果为 200 1
#练习题 请通过分页对数据进行展示
"""
要求:
每页显示10条数据
让用户输入要查看的页面:页
第1页:USER_LIST[0:10]->0123456789
第2页:USER_LIST[10:20]
第3页:USER_LIST[20:30]
"""
USER_LIST = []
for i in range(0,836):
temp = {‘name‘:‘我有%s个苹果‘%i,‘mail‘:‘123%s@qq.com‘%i}
USER_LIST.append(temp)
print(USER_LIST)
#数据总条数
total_count = len(USER_LIST)
#每页显示的条数
per_page_count = 10
#总页码数
max_page_num,a = divmod(total_count,per_page_count)
if a > 0:
max_page_num += 1
else:
max_page_num = max_page_num
while True:
pager = int(input("请输入你要查看的页数:"))
if pager < 1 or pager >max_page_num :
print("页码不合法,必须是1—%s" % max_page_num)
break
else:
start= (pager-1)*per_page_count
end = pager*per_page_count
content = USER_LIST[start:end]
for i in content :
print(i)
强制转换:
强制转换示例:
bin 将十进制转换为二进制:
num=13
v1=bin(num)
print(v1)
oct 将十进制转换为八进制:
num=13
v1=oct(num)
print(v1)
hex 将十进制转换为十六进制:
num = 13
v1 =hex(num)
print(v1)
int 是将其他进制转换为十进制
#将二进制转换为十进制
v1=‘0b1101‘
result= int(v1,base = 2)
print(v1)
#将八进制转换为十进制
v1=‘0o1101‘
result= int(v1,base = 8)
print(v1)
#将十六进制转换为十进制
v1=‘0x1101‘
result= int(v1,base = 16)
print(v1)
面试题1:
ip ="192.168.12.79"
v = []
data_list = ip.split(".")
for i in data_list:
i = int(i)
number_bin= bin(i)
v.append(number_bin)
new_string= ‘,‘.join(v)
print(new_string)
面试题2
ip = ‘192.168.12.79‘
ip_list = ip.split(".")
data = []
for item in ip_list:
bin_num = bin(int(item))
print(bin_num[2:])
if len(bin_num[2:]) == 8:
data.append(bin_num[2:])
else:
new_bin = str(bin_num[2:]).rjust(8,‘0‘)
data.append(new_bin)
data_join= ‘0b‘+"".join(data)
print(data_join)
print(int(data_join,base = 2))
今日总结
以上是关于20200118--python学习第十一天的主要内容,如果未能解决你的问题,请参考以下文章