-----------------整理自牛客网
先感谢一下牛客网平台(持续更新中。。。。。。)
1.字典是python中唯一的映射类型,键与键值之间的对应关系;
2.insert(index,value);
3.定义tuple时,当只有一个元素的时候,需要在该元素后面加一个逗号,告诉reader这是一个tuple数据结构;
4.可以给只定义了位置参数的函数传递命名参数(实参);
5.在函数内部定义的变量是本地变量(局部变量),通过函数调用或者是传入函数的参数都以本地变量的形式存在于函数的命名空间,而命名空间和本地变量随着函数的调用而创建,随着调用结束而结束;在函数外部定义的变量是全局变量;在函数体中调用的变量如果不存在于函数的命名空间,他会继续往更大的变量空间去寻找变量,如果一直找不到就会报错;
6.闭包:Python允许创建嵌套函数:现有的作用域和变量生存周期依旧适用。
(4,5,6延伸至闭包的学习,感谢博客:https://www.cnblogs.com/3me-linux/p/6761635.html)
真的很推荐这篇博客哦,把装饰器讲得非常透彻易懂,起到了四两拨千斤的作用~~~
在python里函数和其他东西一样都是对象,函数是python世界里的一级类对象
假设函数f2嵌套在f1内部,可以在函数f1内调用函数f2,返回函数f2返回的结果,同时,也可以直接返回函数f2(像变量一样返回函数f2的名字,即该函数的引用),(了解闭包之前的我会问,如果返回的是f2,此时函数f1已经调用结束,他的命名空间会释放,且本地变量会自动消失,那么在f1外部调用存在于f1内部的f2不会报错吗?了解了闭包之后的我来回答这个疑问,这就涉及到了闭包的特性:f2会记住f1的命名空间,形成了一个封闭的命名空间。但是只会包含f2中调用的f1中的变量,没有发调用的变量一样会在f1调用结束的时候释放掉),每次函数f1被调用的时候,函数f2都会被重新定义。
装饰器其实就是一个闭包,把一个函数当做参数然后返回一个替代版函数(也可以形象地称之为原函数的装饰版本或加强版本)。
使用 @ 标识符将装饰器应用到函数:只需要在函数的定义前加上@和装饰器的名称(f1)
add = wrapper(add):将原本的方法用装饰后的方法代替
@wrapper
def ....
这两种做法效果一毛一样哦
python只是加了一些语法糖让装饰的行为更加的直接明确和优雅一点
7.sys.argv 是获取运行python文件的时候命令行参数,且以list形式存储参数:sys.argv[0] 代表当前module的名字,接下来顺次是输入的参数
8.str.endswith(suffix[, start[, end]])
- suffix -- 该参数可以是一个字符串或者是一个元素。
- start -- 字符串中的开始位置。
- end -- 字符中结束位置。
如果字符串含有指定的后缀返回True,否则返回False
9.
一个模块中有__name__
1.
直接运行 __name__为 __main__
2.
调用该模块,__name__为被调用模块的 模块名