1. *args 接收实参的位置参数, **kwargs接收实参的关键字参数 def func(*args, **kwargs): print(args, kwargs) func(1, 2, 3, 4, name=') #将位置参数放到args,将关键字参数放到kwargs中 >>>>(1, 2, 3, 4) {'name': 'alex', 'age': '123'} 2. 实参: *位置参数,用来打散位置参数,使其一个个单独传入*args或者**kwargs中 l1 = [1…
1.  函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> 2, 函数名可以被作为变量被传递 def func1(): #2 函数名可以作为变量被传递 ') f1 = func1 f2 = f1 f2() # 执行 func1() 3. 函数名可以被作为参数传递 def func1(): # 3.函数名可以作为参数被传递 print(123) def func2(…
函数嵌套: 第一种嵌套方法 def func(): count = 123 def inner(): print(count) inner() func() 第二种嵌套方法 count = 123 def func_1(): print(count) def func_2(): func_1() func_2() 1. global count = 0 def func1(): global count #把count变量变成全局变量,这样才可以修改,因为count在局部函数中没有定义 coun…
函数的最主要的目的:封装一个功能 函数的优点: 减少代码的复用率, 增加代码的阅读性 def my_len(arvg): # arvg 形参 my_len函数名,应该具有代表性,让你一看就明白 # 函数体 count = 0 for i in arvg: count += 1 return count print(my_len(s)) # s实参 return 特点:遇到return结束程序, 返回一些信息 如果当只有一个返回值时,返回是什么就是什么类型的 如果当有多个返回值时,将返回一个元组,…
如果对象的属性中有__iter__属性就说明是可迭代的,容器类的数据类型都是可迭代对象 如果对象的属性中既有__iter__属性也有__next__属性,就说明这个对象是迭代器 如何判断一个函数是不是可迭代的,是不是迭代器 方法一 s = ' print('__iter__' in dir(s)) #如果是可迭代内部将存在__iter__属性 f = open('01 今日内容大纲', encoding='utf-8', mode='r') print('__next__' in dir(f))…
闭包的基本概念: 闭包 内层函数对外层函数的变量(不包括全局变量)的引用,并返回,这样就形成了闭包 闭包的作用:当程序执行时,遇到了函数执行,它会在内存中开辟一个空间,如果这个函数内部形成了闭包, 那么他就不会随着函数的执行结束而消失 闭包的基本例子 def wrapper(): name = 'alex' def inner(): print(name) #inner函数引用了name函数,形成了闭包 print(inner.__closure__) return inner() wrappe…
名称空间分为3种: 1. 全局名称空间 2. 内置名称空间 3. 局部名称空间(临时) 作用域 全局作用域              1全局名称空间 2 内置名称空间 局部作用域             1.局部名称空间 取值顺序     ----就近原则 局部名称空间 --------  全局名称空间   ---------- 内置名称空间     从小到大的原则进行进行查找, 如果在全局名称空间调用的值,那么他将会在全局名称和内置名称空间取值. 变量的加载顺序 内置空间变量 --------…
文件操作初识: 1. 文件路径 :d:/护士主妇空姐联系方式  (文件路径不要太过复杂,容易碰到转义字符的问题, 当碰到转义字符时,需要在前面+r,或者采用双斜杠(//)) 2. 编码方式 :utf-8, gbk, gb2312 3.操作方式: 只读(r),只写(w), 写读(r+), 读写(w+), 追加(a), 追加读(a+) 1. 读 r     只读模式,适合文字类文件, open的默认方式 rb   非文字类文件的只读方式 r+  读写功能,先读后写时,写入的字符在文件最后,直接写入,…
一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args 将所有实参的位置参数聚合到一个元组,并将这个元组赋值给args(起作用的是* 并不是args,但是约定俗成动态接收实参的所有位置参数就用args) def sum1(*args): print(args) sum1(1,2,['hello']) #是一个元组(1, 2, ['hello']) 2,*…
转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args 将所有实参的位置参数聚合到一个元组,并将这个元组赋值给args(起作用的是* 并不是args,但是约定俗成动态接收实参的所有位置参数就用args) def sum1(*args): pri…