一 自定义包
前章讲过,文件夹必须包含_ _init_ _.py文件,才能被识别为包
1.定义:包中包含模块
右图中,Pack的结构如下:
(1)_ _init_ _.py:
包的标识文件,在里面可以定义模块列表
_ _all_ _=['ModuleA','ModuleB']
在没有定义模块列表时,导入ModuleA只能这样:
from Pack import ModuleA
在定义了模块列表之后,还可以使用‘*’导入
from Pack import *
# 会在Pack标识文件中寻找模块列表并导入
(2)ModuleA.py: 包含类/函数
(3)ModuleB.py: 包含类/函数
2.定义:包中有小包,小包中再包含模块
只需要,用上面1中的方法定义好小包(packageA 和 packageB),然后将小包放在大包(Package)中
调用模块:
from Package.packageA import ModuleA
from Package.packageB import ModuleC
二 .函数
1.函数的定义
def 函数名(参数1,参数2...):
.......
return 表达式/变量
函数名由字符,数字,下划线构成,但不能以数字开头,函数的类型即返回值的类型,参数可以一个或者多个,用逗号隔开
(1)
def func():
pass
print(func())
#输出:None
pass相当于一个占位符,什么也不干
(2)
def func():
return
print(func())
#输出:None
不带return语句和return语句不带参数时,返回都是None
None是一个对象,不属于数字也不属于字符串
(3)排序函数:1.装入列表 2.使用列表排序 3.‘打包进元组’4.解压
def func(x,y,z):
num=[x,y,z]
num.reverse() #反转排序
numbers=tuple(num)
return numbers
x,y,z=func(1,2,3)
print(x,y,z)
# 输出:3 2 1
(a)列表反转排序:list.reverse() 将列表元素位置颠倒
(b) tuple()使用方法
>>>tuple([1,2,3,4])
(1, 2, 3, 4)
>>> tuple({1:2,3:4}) #针对字典 会返回字典的key组成的tuple
(1, 3)
>>> tuple((1,2,3,4)) #元组会返回元组自身
(1, 2, 3, 4)
2.嵌套函数
(1).嵌套外部函数:
funcA()
funcB ()
funcC()内部调用了funcA()和funcB()
(2).内部函数
funcC()内部定义了funcA和funcB()
两个子函数可以直接使用func()父函数的变量
3.lambda函数
格式:
lambda var1,var2:表达式
该函数用于创建一个匿名函数,只能使用表达式,用于返回表达式的结果。不能使用判断,循环等语句,
#lambda
def func():
x=1
y=2
sum=lambda x,y:x+y # 计算x+y结果 赋值给sum
sub=lambda x,y:y-x #计算y-x结果 赋值给sub
return sum*sub
print(func())
4.函数的调用
(1)没有默认参数值的情况:
>>> def func(name,age):
print('Hi ',name,'I hear you\'re',age)
>>>
>>> func('TL',18)
Hi TL I hear you're 18
>>> func(age=20,name='LC')
Hi LC I hear you're 20
>>>
(2)有默认值的情况
>>> def func(name='ZS',age=12):
print('Hi ',name,'I hear you\'re',age)
>>> func()
Hi ZS I hear you're 12
>>> func('TL',18)
Hi TL I hear you're 18
>>> func(age=20,name='HY')
Hi HY I hear you're 20
>>>
5.全局与局部变量
(1)函数内读取全局变量的情况
>>> str='Hello world'
>>> def func():
print(str)
>>> func()
Hello world
>>>
(2)函数内屏蔽全局变量的情况
>>> str='Hello world'
>>> def func():
str='Python'
print(str)
>>> func()
Python
>>>
(3)函数内使用全局变量的情况
>>> str='Hello world'
>>> def func():
global str
print(str)
str='Java'
print(str)
>>> func()
Hello world
Java
>>>