我的Python基础(二)
2024-10-21 06:20:02
python包含6种内奸的序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象
列表和元组的主要区别在于,列表可以修改,元组则不能。
索引:
使用负数索引时,最后一个元素的位置编号是-1
下面的代码自己也有不明白的地方:
分片:可以使用分片操作来访问一定范围内的元素。
列表,支持相加;li.extend()批量增加
v1=[1,1]
v2=[2,2]
v3=v1+v2
v1.extend(v2)
print(v3)
print(v1)
推导式for循环嵌套:
data = []
for i in ['a','b']:
for j in [1,2,3]:
data.append((i,j))
print(data)
data = [(i,j) for i in ['a','b'] for j in [1,2,3]]
print(data)
函数,函数名本质是一个变量
函数基础:
关键字传参和位置传参。两种方式可以混搭,但关键字传参一定要放到后面
默认参数
动态参数:在执行函数时,可以支持任意个参数 *args,内部处理自动打包成元组
def x(*args):
pass
x('n','ss')
li = ['kk','ii']
x(*li)
**args,都必须用关键字传参
def xx(**x1):
pass
xx(x='ww',v=123)
dic = {'name':'jack','age':18}
xx(**dic)
混合使用
def func(*args,**kwargs):
pass
func(1,2,4,v='xx')
func(1,2,3)
return:
'''
返回值:函数中未出现return,默认则为None
函数一旦遇到return则立即终止
return 后面未写值 则为None
return 1, 如果返回值加了","则返回类型是元组
'''
def get_count():
text = 'nihehifhieeo'
count = 0
for item in text:
if item == 'h':
count += 1
return count
res = get_count()
print(res)
函数进阶:
函数名本质是变量:
num = 123
age = 18
def func():
return 666
data_list = [num,age,func]
print(data_list)
_list = [num,age,func()]
print(_list)
def a():
pass
def b():
pass
def c():
pass
data_func = [a,b,c]
for item in data_func:
item()
dic_func = {
'1':a,
'2':b,
'3':c
}
dic_func['2']()
def login():
pass
def register():
pass
def show_user():
pass
print("welcome to xxx system,1 login 2 register 3 show user list")
choice = input("please choice No")
if choice == '1':
login()
elif choice == '2':
register()
elif choice == '3':
show_user()
else:
sys.exit()
'''
method 2:
'''
func_list = [login,register,show_user]
if int(choice) in (0,len(func_list)):
func_list[int(choice)]()
else:
sys.exit()
"""
method 3
"""
func_dict = {
"1":login,
"2":register,
"3":show_user
}
func = func_dict.get(choice)
if func == None:
print("error")
else:
func()
def f1(a):
pass
def f2(a,b=None):
pass
func_list = [f1,f2]
for item in func_list:
item(1)
"""
method parames can any type
"""
def f1(a,b,c,d,e,f):
pass
def f2():
pass
name = 'jack'
f1(1,name,['3',3],True,(2,),f2)
变量作用域:
函数参数传递引用(内存地址):
关于默认参数,默认参数不要用可变类型:
def func(num,l=[]):
l.append(num)
return l
v1 = func(11)
v2 = func(22,[55,33])
v3 = func(44)
print(v1) #[11, 44]
print(v2) #[55, 33, 22]
print(v3) #[11, 44]
函数高级:
生成器函数,yield关键字是标志,只有被循环时才执行。平时用的较少,底层代码会用到
#生成器
def f():
print("-----")
yield 1
print("*****")
yield 2
#生成器对象
data = f()
for item in data:
print(item)
def create_num(max_num:int):
val = 0
while True:
if val == max_num:
return
yield val
val += 1
data = create_num(10)
for item in data:
print(item)
eval() 字符串编译成函数拿过来用
def f(arg):
print(arg)
data = "f('jjj')"
eval(data)
jsonp类型的用eval()便捷
import requests
def jsonp_queryMoreNums(args):
print(args)
res = requests.get(url="https://num.10010.com/NumApp/NumberCenter/qryNum?callback=jsonp_queryMoreNums")
# print(res.text)
# print(type(res.text))
eval(res.text.rstrip(";"))
闭包 装饰器 生成器
最新文章
- 11.Configure Many-to-Many(配置多对多关系)【Code-First系列】
- flex布局
- 一个servlet处理多个功能
- ML_R Kmeans
- PHP7安装笔记
- 维护没有源代码,float改成double
- 文件I/O(不带缓冲)之write函数
- 【模拟】【HDU1443】 Joseph
- 转: Apache开启gzip
- NLP 苏图南 打破自我设限 突破自我—在线播放—优酷网,视频高清在线观看
- 根据html生成Word文件,包含图片
- CY7C68013A控制传输
- 20175303 2018-2019-2 《Java程序设计》第7周学习总结
- KTV项目之3个ListView的跳转和加载歌手图片
- 清除 idea 缓存
- 在CentOS4上安装JMagick
- HDFS文件上传
- MyEclipse安装及破解步骤
- Unity3D中的弹道和移动目标提前量计算
- 关于在Android中访问和使用到上下文变量