我的Python基础(二)

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(";"))

闭包    装饰器    生成器

posted @ 2022-11-10 16:08  飘绪  阅读(47)  评论(0)    收藏  举报