1、自定义函数
自定义函数格式如下:
def (参数列表):return
#!/usr/bin/python#定义函数,打印数字1~5
defprintNum5():#range函数,生成列表集合,有3个入参:start(可选,起始数),stop(终止数,生成的数不包含),step
for i in range(1,5+1):print(i);
printNum5();
带参数的函数:
#!/usr/bin/python#定义函数,打印列表数据
defprintNum(x):for i inx:print(i);
printNum(['ls','pwd',6,9,'cd']);
有默认参数的函数:
#!/usr/bin/python#求x的y次方,默认x为2,y为5
def cube(x=2,y=5):return x**y;print(cube()); #x、y都使用默认值
print(cube(3)); #x 设置为 3,y 使用 默认值
print(cube(3,2)); #x、y都不使用默认值
print(cube(y=3)); #x 使用 默认值,y 设置为 3
print(cube(y=2,x=8)); #打乱传参次序
传递任意个参数:
#!/usr/bin/python#传递任意个参数:如果参数名前加上一个星号“*”,则表示参数是一个可变长参数
def addNum(*nums):
result=0;for i innums:
result+=i;returnresult;print(addNum()); #0
print(addNum(1,3)); #4
print(addNum(8,8,6)); #22
2、变量作用域
#!/usr/bin/python
deffun(x):
a= [1];
a.append(x);print(a);
a= [3,4,5];
fun(2); #a并没有变化
print(a);
#!/usr/bin/python
deffun(x):global a; #设置a为全局变量
a = [1];
a.append(x);print(a);
a= [3,4,5]; #全局变量
fun(2); #a发生变化
print(a);
3、使用lambda 声明函数
使用lambda可以声明一个匿名函数,lambda声明的是一个简单的函数。
lambda 函数中不能使用 print() 函数
#!/usr/bin/python#lambda函数 的好处就是简洁
fun = lambda x : x*x+1 #声明一个lambda函数
print(fun(3));print(fun);
4、可重用结构:python模块
python中的模块,实际上就是包含函数或者类的python脚本。
对于一个大型脚本,常常需要把功能细化到各个模块。
导入模块写法:
import 模块名
import 模块名 as 新名字
from 模块名 import 函数名
使用 “ from 模块名 import 函数名 ” 写法与 “ import 模块名 ”, 调用函数的区别是,前者可直接使用函数名调用函数,后者需要 “模块名.函数名” 调用函数。
#!/usr/bin/python
importmathprint(math.sqrt(16));from math importsqrtprint(sqrt(81));
重新载入模块:
#!/usr/bin/python
importosimportimp
a= imp.reload(os) #重新载入模块
print(a);
编写一个模块:
包括两个文件,一个是模块文件,一个是调用文件。
#文件 myPart.py
defshow():print("This is show");
name= "myPart-name";
#!/usr/bin/python
#文件 test.py
importmyPart
myPart.show();print(myPart.name);
python 中的模块在哪里查找:
编写好的模块,如果不和调用文件在同一个目录,那么要怎么查找呢,或者要怎么放置自己的模块呢?
#!/usr/bin/python
importsysprint(sys.path) #查看模块检索路径有哪些
如果新加了一个模块放在当前路径下的module目录,如何添加路径呢?
#!/usr/bin/python
importsysimportos
sys.path.append(os.getcwd()+'\\module'); #添加一个目录,其中os.getcwd() 方法用于返回当前工作目录
print(sys.path);importmyPart
myPart.show();
对于模块脚本,python会在运行后将其编译成 .pyc 字节码文件;对于非模块的脚本,python不会再运行文件之后将其编译成字节码形式。
如何查看模块提供的函数名:
#!/usr/bin/python
importsysimportos
sys.path.append(os.getcwd()+'\\module'); #os.getcwd() 方法用于返回当前工作目录
importmyPartprint(dir(os)) #使用dir 函数查看模块提供的函数名
print(dir(myPart))
对于上面的每次运行都要加sys.path,其实是很不方便的,但是有解决办法,就是使用包。包其实就是一个相对于当前目录的路径而已
#!/usr/bin/python
importmodule.myPartprint(dir(module.myPart))
module.myPart.show()
简洁一点:
#!/usr/bin/python
importmodule.myPart as myPartprint(dir(myPart))
myPart.show()