数据分析 PyDay04
可复用的函数和模块
函数的定义
def hi():
print('heelo world')
hi()
参数
自定义参数
def Cube(x=5):
return x**3
Cube(2) #计算2的三次方
Cube() #计算默认值的三次方
传参方式
def fun(x,y,z):
return x+y-z
fun(1,2,3) #按顺序传递参数
fun(x=1,y=2,z=3) #按参数名传递参数
按顺序传递的参数要位于按参数名传递的参数之前
fun(1,z=3,y=2)
传递任意数量的参数
在定义函数时,如果在参数名前加上一个星号“*”,则表示该参数是一个可变长参数。
def my_min(*list):
参数返回计算结果
参数中使用可变对象(列表等),使函数中的结果返回到参数中。
def change(x):
x[0]=x[0]**2
b = [2]
change(b)
>>>[4]
变量的作用域
lambda表达式定义函数
使用lambda表达式可以定义一个匿名函数(所定义的函数没有函数名)
一般形式:
lambda 参数列表:表达式
例:
fun = lambda x: x * x - x #使用lambda表达式定义一个函数,返回函数地址(给fun)
fun(3) #调用lambda表达式定义的函数
6 #函数返回值
lambda表达式适用于定义小型函数,在函数中仅能包含单一的参数表达式,而不能包含其他语句。
def show(): #使用def定义show()函数
print('lambda')
f = lambda:show() #在lambda表达式中调用show()函数
f() #调用使用lambda表达式生成的函数
>>>lambda
模块
导入
import 模块名
import 模块名 as 新名字
from 模块名 import 函数名
编译模块
运行完.py文件之后会发现在目录中会多一个pycache文件夹,下面会有一个mymodule.cpython-36.pyc文件,这个文件就是Python将mymodule.py文件编译成字节码的文件。
由于Python是脚本语言,如果不想发布源文件,可以发布编译后的脚本。
将1.py编译为.pyc文件
#file:compile.py
#
import py_compile #导入py_compile模块
py_compile.compile('1.py','1.pyc'); #编译1.py
可以看到编译后的1.py文件并没有改变程序功能,只是以Python字节码的形式存在。
在命令行中优化脚本
python -O 1.py #对脚本的优化不多,编译后的脚本以.pyo为扩展名。
python -OO 1.py #优化程度大,脚本更小,但是可能会导致脚本错误,谨慎使用!
查看模块函数名
import sys
dir(sys)
包(解决查找路径的问题)
包可以看作处于同一目录中的模块,在包的每个目录中都必须包含一个名为init.py的文件。可以是空文件,仅用来表示该目录是一个包。
init.py文件主要用途是设置all变量,以及所包含的包初始化所需的代码。
在from中使用通配符“*”导入包内所有的名字时,在init.py文件中设置all变量可以保证名字正确输导入。
from A.B import a #是哟弄个form导入模块
import A.B.a #使用import导入模块
只要将所有的模块放在当前目录中的某个文件夹内,然后在该文件夹中新建一个空的init.py文件,就可以通过目录结构的层次导入所需的模块,不用将目录的路径添加到sys.path路径列表中。
内部引用
A: __init__.py
B: __init__.py
a.py
C: __init__.py
a.py
b.py
对于C目录中的b.py
引用同样位于C目录中的a.py
import a
C目录中的b.py要引用B目录中的a.py
from A.B import a
原文作者: 冯亚杰(DanBoard·Feng)
原文链接: http://danbo3110.github.io/2019/10/23/数据分析 PyDay04/
版权声明: 转载请注明出处(必须保留作者署名及链接)