标签:
1. python中多个函数或者类定义可以放在一个.py 文件中,视为一个模块。模块的.py文件中,一般要写 if __name__ == ‘__mian__‘ 用来单独执行该模块内的某些函数。
2. python多个模块放在同一个文件夹中,并在文件夹中新建一个 __init__.py 文件,则该文件夹就可以形成一个包。__init__.py 文件就是告诉python解释器该文件夹为一个包,__init__.py 中内容可以为空。
3. 在python文件中可以import某个包,某个包中得某个模块,某个模块,某个模块中的某个类或者函数,比如;
import pack1 #这样在使用pack1中的模块或者其他东西,需要在模块名前写明 pack1 import pack1.module1 #在使用module1时,需要写pack1.module1.xxx import module1 from pack1 #这样,在使用module1时,可以不用写pack1,只写 module1.xxx import module1.classA #在使用classA的时候,需要写明 module1.classA import classA from module1 #使用classA的时候,只需要 classA import module1.func1 #使用func1的时候,需要写 module1.func1 import func1 from module1 #使用func1的时候,只需要写 func1 ####注意,以上都是默认命名空间不会发生冲突,即不会出现这种情况: # module1和module2中都有classA,且同时 import classA from module1, import classA from #module2,因为这样会出现冲突
4. python程序执行的时候,包和模块的搜索路径为:
(1)当前文件夹
(2)系统变量PYTHONPAHTH 定义的路径
(3)python标准库的安装路径
5. python函数传递参数的方式可以有如下几种方式:
(1)位置传递参数
即传递进去的参数顺序和函数定义的顺序一致,如果有默认参数,则默认参数要放在最后的位置
(2)关键字传递参数
即调用函数的时候,写明 func(arg1 = real_arg1, arg2 = real_arg2..),即形参和实参明确对应,此时,实际参数的顺序就不必按照函数定义时的参数顺序来写。
位置传递参数和关键字传递参数可以混用,但是位置传递的参数需要放在关键字传递的参数之前,比如 func(real_arg1, arg2 = real_args, arg3 = real_arg3....)
(3)包裹传递
类似c语言的非定项参数,有两种传递方式,
(1)通过元组来传递,函数的定义为:
def func(*args):
xxxx
实际调用的时候:
func(1,2,3,4) #1,2,3,4自动包装成了一个元组
(2)通过字典来传递,函数定义为:
def func(**args):
xxxx
实际调用的时候:
func(a=‘hello‘ , b = ‘world‘, c = 123) #参数自动封装成了一个字典 {‘a‘:‘hello‘, ‘b‘:‘world‘, ‘c‘:123}
(4)解包裹传递
若函数定义的时候的参数为多个,而我们想要将一个元组或者一个字典的各个元素分别作为函数的多个参数,则将元组或者字典作为参数传给函数的时候,可以:
def func(a, b, c):
xxx
调用的时候:
t = (1,2,3)
func(t)
t2 = {‘a‘:1, ‘b‘:23, ‘c‘:‘hello world‘}
func(t2) #将字典的键值对分别作为各个参数
在定义或者调用参数时,参数的几种传递方式可以混合。但在过程中要小心前后顺序。基本原则是,先位置,再关键字,再包裹位置,再包裹关键字,并且根据上面所说的原理细细分辨。
注意:请注意定义时和调用时的区分。包裹和解包裹并不是相反操作,是两个相对独立的过程。
标签:
原文地址:http://www.cnblogs.com/gtarcoder/p/5006320.html