1.函数
1.默认参数值
#含有默认值参数的函数必须把含默认值的参数放在普通参数之后
def sum(a,b=10):
print(a,b)
#这样就不行
def sum(a=10,b):
print(a,b)
sum(a=10)
2.关键字参数
def sum(a,b=1,c=10):
print(a,b,c)
#在使用函数时指定关键字后可以不按照函数要求顺序输入参数
sum(1)
sum(b=2,a=10)
sum(c=1,b=2,a=1)
3.可变参数
有时你可能想定义的函数里面能够有任意数量的变量,也就是参数数量是可变的,这可以通 过使用星号来实现
def total(a=5, *numbers, **phonebook):
print('a', a)
#遍历元组中的所有项目
for single_item in numbers:
print('single_item', single_item)
#遍历字典中的所有项目
for first_part, second_part in phonebook.items():
print(first_part,second_part)
print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
2.DocString
DocStrings是python提供的一个重要功能用来帮助更好地记录和解释程序(类似于注释)。重要的是,我们可以在程序运行时,通过函数访问这些文档(name.__doc__)。
def print_max(x, y):
'''Prints the maximum of two numbers.打印两个数值中的最大数。
The two values must be integers.这两个数都应该是整数'''
# 如果可能,将其转换至整数类型
x = int(x)
y = int(y)
if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')
print_max(3, 5)
print(print_max.__doc__)
3.模块
1.导入
导入的模块应该位于当前文件夹下或者环境变量的文件夹中。可以通过sys.path查看环境变量文件夹位置。
另外,除后缀.py的文件可以作为导入模块外,C语言编写的模块也可在python中被使用。
模块的导入方式有三种,分别是
1)import 模块名
这样的方式将会导入模块内的全部函数及变量,当需要使用相应函数时应该使用 a.sum()(模块名.函数名)这样的方式使用。 这样做的好处是导入的模块内的函数不会因名称与原有函数冲突,但是每次使用会比较麻烦,可以赋值给本地变量使用,另一方面导入模块有较高的代价,因此python引入了.pyc文件作为中间形式的文件,加快了该过程。
2)from 模块名 import 函数名,变量名
这样的方法能够直接导入模d块中的函数和变量名进行使用,但要注意该名称是否会和原有函数名产生冲突。
3)from 模块名 import *
这种方法会直接引入模块中所有的函数及变量,但不包含注入“__version__”这样包含双下划线的变量。应该尽量避免使用这种导入方式,避免与原有名称产生冲突。
2."__name__" 的使用
if __name__== '__main__':
print('this program is being run by itself')
else:
print('i am being imported from another module')
通过使用__name__可以判断当前模块是否是被引用还是独自运作,从而可以根据出相应情况做出调整。
3.dir()函数的使用
在引入模块后,我们可以通过dir(模块名)函数来查看所引入的模块所包含的函数名,对象名,变量名。当没有提供参数时则会返回当前模块的相关信息。
当dir()中的参数为某一个类时,则会返回该类中所含的对象名如 dir(str) 可查看str类中包含的对象。同时,还有一个vars() 函数也可以返回给你这些值的属性,但只是可能,它并不能针对所 有类都能正常工作。
import sys
def doNothing():
return None
a = 1
#查看sys所包含函数名,类名,变量名
print(dir(sys))
print("\n")
#产看当前模块信息
print(dir())
4.包
现在,你必须开始遵守用以组织你的程序的层次结构。变量通常位于函数内部,函数与全局 变量通常位于模块内部。如果你希望组织起这些模块的话,应该怎么办?这便是包 (Packages)应当登场的时刻。
包是指一个包含模块与一个特殊的 __init__.py 文件的文件夹,后者向 Python 表明这一文 件夹是特别的,因为其包含了 Python 模块。
建设你想创建一个名为“world”的包,其中还包含着 ”asia“、”africa“等其它子包,同时这些子 包都包含了诸如”india“、”madagascar“等模块。
下面是你会构建出的文件夹的结构:
- <some folder present in the sys.path>/
- world/
- __init__.py
- asia/
- __init__.py
- india/
- __init__.py
- foo.py
- africa/
- __init__.py
- madagascar/
- __init__.py
- bar.py