一、函数
1.定义函数规则
-
函数代码块以def 函数名(参数):开头;
-
接下来第一行可写注释存放函数说明。
-
函数内容以冒号开始,缩进(缩进用tab键或四个空格,推荐前者)
-
return [表达式] 结束函数,选择性的返回一个函数,return后不带表达式则返回None
给出示例,输入:
def primenumber(a): #定义素数函数,a为参数
#此函数功能为输出a以内的素数,其中a自定义
j=1
list=[] #定义列表
for i in range(3,a): #for循环遍历3到a
for j in range(2,i): #内嵌for循环遍历2到i
if(i%j == 0): #判断i能否被j除尽
break #若为True 则终止循环
if j == i-1: #判断j是否等于i-1
list.append(i) #若为Ture则将i写入列表中
return list #返回列表
if __name__ == "__main__": #当模块被直接运行时,以下代码块将被运行
p = int(input("please input number:")) #输入参数
print(primenumber(p)) #调用函数并输出p以内的素数
输出:
please input number:100
[3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
注:其中就if __name__ == '__main__'做出简要解释:__name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。此语句在今后涉及到多个.py或者导入模块时会经常用到,附上详细解释链接:http://blog.konghy.cn/2017/04/24/python-entry-program/
2.函数参数
函数调用参数时有四大正式参数类型,分别是必需参数、关键字参数、默认参数、不定长参数,下面给出四合一示例,输入:
print('-'*25,"fun1()输出",'-'*25)
def fun1(a,b,c): #必需参数
#功能是返回所给参数的内容
return a,'是行政楼',b,'是图书馆',c,'是教学楼'
#按照b->a->c顺序输出,若不输入参数则报错
print(fun1(b = '逸夫楼',c = '文泰楼',a = '中原楼'))
print('-'*25,"fun2()输出",'-'*25)
def fun2(a = '中原楼',b = '逸夫楼',c = '文泰楼'): #默认参数
#功能同上,但全是默认参数
return a, '是行政楼', b, '是图书馆', c, '是教学楼'
print(fun2()) #若不输入参数,按照默认参数输出
print('-'*25,"fun3()输出",'-'*25)
def fun3(*a): #不定长参数
#功能是遍历输出所有输入参数
for i in a:
print(i)
return;
a = "中原楼";b = "逸夫楼";c = "文泰楼"
print(fun3(a,b,c)) #输出参数a,b,c
输出:
------------------------- fun1()输出 -------------------------
('中原楼', '是行政楼', '逸夫楼', '是图书馆', '文泰楼', '是教学楼')
------------------------- fun2()输出 -------------------------
('中原楼', '是行政楼', '逸夫楼', '是图书馆', '文泰楼', '是教学楼')
------------------------- fun3()输出 -------------------------
中原楼
逸夫楼
文泰楼
None
3.匿名函数
python使用lambda来创建匿名函数。区别于def函数的标准形式,lambda只是一个表达式,比def函数简单得多,且拥有自己的命名空间,不能够访问空间外的参数。其语法只包含一个语句,为:
lambda [arg1 [,arg2,.....argn]]:expression
示例如下,输入:
f = lambda x, y, z :x+y+z #功能是输出三个参数之和,参数规则同def
print('和 =',f(1,2,3))
L = [lambda x: x+2, lambda x: x*2, lambda x: x**2] #定义包含三个lambda函数的列表,功能是分别输出参数的+2、*2和2次方
print ("L=", L[0](1), L[1](2), L[2](3))
输出:
和 = 6
L = 3 4 9
二、模块
我们知道python解释器中退出,在此进入时定义的函数已经失效了。为此,我们在python中引入模块,将这些定义存放在模块当中,供后续使用。在这里就以引入标准库sys为例。输入:
import sys #导入import模块
print("此脚本路径:",sys.argv) #输出此脚本路径
print('—'*100)
print("此模块存放路径:",sys.path) #输出此模块存放路径
print('—'*100)
print(dir(sys)) #内置dir()函数以字符串列表形式返回参数
输出:
此脚本路径:['F:/programme/python/learn/test21.py']
————————————————————————————
此模块存放路径:['F:\\programme\\python\\learn', 'D:\\SoftwareInstall\\anaconda\\python36.zip',....]
————————————————————————————
['__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__',...]