如何正确使用字符编码:
文件存:从内存刷到硬盘
文件读:从硬盘读到内存

1:文件执行前,文件存取都用一样的编码
内存中默认都是unicode
2:文件执行时,才有了字符串的概念,只有unicode才能被encode()
在python3中字符串默认是unicode
在python2中字符串是按照文件头指定编码进行编存的,在字符串前加u才是unicode

函数定义阶段只检测语法,不执行代码

形参一一对应,且不多不少

实参:
位置实参必须在关键字实参的前面
实参的形式既可用位置实参又可以是关键字实参,但是一个形参不能重复传值

默认参数:
默认参数放形式参数后面
默认参数通常定义为不可变类型
默认参数只在定义时被赋值一次


*用来解开序列,**用来解开字典
================
def func(x,y,z):
pass

func(1,*(2,3))#x=1,y=2,z=3
================
def func(x,y,z):
pass

func(**{'y':2,'x':1,'z':3})#func(x=1,z=3,y=2)
================

def func(x,y=1,*args,z,**kw):
print(x)
print(y)
print(args)
print(z)
print(kw)
func(1,2,3,4,5,z=10,a=1,b=2)
'''
1
2
(3,4,5)
10
{'b':2,'a':1}
'''
名称空间:存放名字与值的绑定关系
分为:
内置名称空间:python解释器自带的名字,python解释器启动就会生成的解释器

全局名称空间:文件级别定义的名字都会存放于全局名称空间,执行Python

局部名称空间:定义在函数内部的名字,只在调用函数时生效,调用结束失效

加载顺序:内置>>全局>>局部

取值:局部>>全局>>内置

闭包函数:函数内部定义的函数,成为内部函数,该内部函数包含对外部作用域, 而不是对全局作用域名字的引用,则该内部函数为闭包函数