函数小结

nonlocal 非本地的,就是上一级的,但是不是全局的
#LEGB:
local
E外层函数局部变量
Global
Buitl-in

#参数解构
# *对容器解构,按照位置传实参,字典取得是key
#** 只用于mapping,按照kv对实现关键字传参,key要和形参对应

#至少传入两个参数,求最大值跟最小值
x=list(range(100))
print(x)
def get_value(a,b,*args):
return max(a,b,*args), min(a,b,*args)
get_value(*x)

 

 


x=list(range(100))
def get_values1(x,y,*args):
t=(x,y,*args)
return min(t),max(t)
get_values1(*x)


x=list(range(100))
def get_value2(x,y,*args):
head,*_,tail=sorted((x,y,*args))
return head,tail
get_value2(*x)


# #有一个列表lst=[1,4,9,16,2,5,10,15],生成一个新列表,
# #要求新列表元素是lst相邻两项之和
#
# lst=[1,4,9,16,2,5,10,15]#可以先简化为135 确认边界
# new_list=[]
# #lst=[1,3,5]
# for i in range(len(lst)-1):
# new_list.append(lst[i]+lst[i+1])
# print(new_list)
#
# print(st[i]+lst[i+1] for i in range(len(lst)-1))


#随机生成100个产品id,id格式如下
*顺序的数字6位,分隔符点号,10个随机小写英文字符
*例如000005.xabbnjsdef

import random
import string
print(string.ascii_lowercase)
alphabet='abcdefghijklmnopqrstuvwxyz'
for i in range(1,6):
id='{:0>6},{}'.format(i,''.join(random.choices(alphabet,k=10)))
x=random.choices(alphabet,k=10)
#x = random.choices(alphabet, k=10)
#random.choices返回的是一个列表,需要用join处理为字符串
print(id)
print(x)
#弄出随机字母
(chr(i) for i in range(0x61,0x61+26))。可以从生成器表达式中choices10个
#或者按下面的,直接join一下
#''.join(chr(i) for i in range(0x61,0x61+26))
#abcdefghijklmnopqrstuvwxyz'


#形参,可以有缺省值,定义时,如果没有提供该参数,动用缺省值,缺省值的定位往后放
5种
1.普通参数:可以有缺省值,2种传实参方式都可以用
2.*nums ,可变仅位置形数,只能接受按照位置传入的实参,可以接受0个或任意个,没有缺省值
3.**kwargs可变仅关键字形参,只能接受关键字传入的实参,可以接受0个或任意个,形参的最后一个,没有缺省值
4.keyword-noly 形参,*args或*之后,仅仅只能接受关键字传入实参
5.positional-only形参,/之前,仅仅接受位置出入参数
# 1def add(x=4,y=5):
# print(x,y)
#2def add(*nums):
# print(type(nums),nums) 返回元组
# def add(**kwargs):
# print(type(kwargs),kwargs)
# for k,v in kwargs.items():
# print(k,v) 返回字典

 

# def foo(*args,x,y):
# print(x,yx,args)
#
# sorted(iterable, /, *, key=None, reverse=False)
# sorted([1,2],reverse=True,key=str)
# sorted的第一个参数占位置,需要位置参数
# def fooo(x,y,/):
# print(x,y)
# fooo(1,2)

#外层循环次数
#内层循环两个数字
#交换用封装解构

#生成器对象:
1.生成器表达式,每一次生成器表达式执行一次都会得到一个全新的生成器对象
2.生成器函数,每一次函数调用都会得到全新的生成器对象,只有有yield语句的函数都是生成器
函数,生成器函数每一次执行到yield这一句,把Yield的值返回
return非常强势,见到它函数就完了

#作用域:标识符的可见范围
#函数开辟了一个作用域,x被限制在当前函数作用域中,对外不可见
#全局的、函数外的变量,对内穿透

posted @ 2022-09-19 11:08  红丿领巾  阅读(17)  评论(0)    收藏  举报