def 函数名(参数): ... 函数体 ...
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
以上要点中,比较重要有参数和返回值:
和其他高级语言区别:
1.声明函数名尾部要有冒号.
2.它不需要用花括号将语句块括起来,用TAB键缩进.
函数式编程最重要的是增强代码的重用性和可读性
实例:
def test_a(): print ‘hello world‘ print ‘www.jeapedu.com‘ def test_b(varl,var2): #函数定义,形参,提供给使用者一个接口. print val1, print val2, print ‘Entry programme‘ test_a() test_b(12,13) #函数调用,实参. print ‘leave programme‘
1、返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
def 发送短信(): 发送短信的代码... if 发送成功: return True else: return False while True: # 每次执行发送短信函数,都会将返回值自动赋值给result # 之后,可以根据result来写日志,或重发等操作 result = 发送短信() if result == False: 记录日志,短信发送失败...
2、参数
为什么要有参数?看下下面的例子:
如果不定义参数,用函数的话:(每个有相同功能的都写个函数,说好的代码简化呢?)
def CPU报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 硬盘报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 def 内存报警邮件() #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 while True: if cpu利用率 > 90%: CPU报警邮件() if 硬盘使用空间 > 90%: 硬盘报警邮件() if 内存占用 > 80%: 内存报警邮件()
函数有三中不同的参数:
- 普通参数
- 默认参数
- 动态参数
- 1,接收多个参数
2,内部自动构造元组
3,序列,*,避免内部构造元组 -
1 >>> li = (1,2,3,4,5,66,‘alex‘) 2 >>> 3 >>> def func(*args): 4 ... print args 5 ... 6 >>> func(li) 7 ((1, 2, 3, 4, 5, 66, ‘alex‘),) 8 >>> func(*li) 9 (1, 2, 3, 4, 5, 66, ‘alex‘) 10 >>> li = [1,2,3,4,5,66,‘alex‘] 11 >>> def func(*args): 12 ... print args 13 ... print args[0] 通过下标获取元素 14 >>> func(li) 15 ([1, 2, 3, 4, 5, 66, ‘alex‘],) 16 >>> func(*li) 17 (1, 2, 3, 4, 5, 66, ‘alex‘) 18 >>>
普通参数
默认参数
动态参数一
动态参数二
动态参数三
如果一个函数定义中的最后一个形参有 ** (双星号)前缀,所有正常形参之外的其他的关键字参数都将被放置在一个字典中传递给函数,比如:
1 def contacs(a,**b): 2 print "a is: %s" %a 3 for i in b: 4 print i + ":" + str(b[i]) 5 6 contacs(100, saneri=1234567890,rain=007) #调用 7 8 a is: 100 #执行结果 9 saneri:1234567890 10 rain:7
扩展:发送邮件实例
import smtplib from email.mime.text import MIMEText from email.utils import formataddr def email(message): msg = MIMEText("邮件报警测试", ‘plain‘, ‘utf-8‘) msg[‘From‘] = formataddr(["saneri",‘[email protected]‘]) #发件人和发件邮箱 msg[‘To‘] = formataddr(["收件人",‘[email protected]‘]) msg[‘Subject‘] = message #这里我调用了参数 server = smtplib.SMTP("smtp..com", 25) server.login("[email protected]", "密码") server.sendmail(‘[email protected]‘, [‘[email protected]‘,], msg.as_string()) server.quit() if __name__ == u‘__main__‘: cpu = 100 disk = 500 ram = 50 for i in range(1): if cpu > 90: alert = u‘CPU出问题了‘ #这里设置了一个变量 email(alert) #这里调用函数的时候引用了上面的变量,当执行函数的时候形参讲会被替换掉,message=‘CPU出问题了‘ 发送邮件! if disk > 90: alert = u‘硬盘出问题了‘ email(alert) if ram> 80: alert = u‘内存出问题了‘ email(alert) --------------------------------------------------------------------------------------------------
如果执行python test.py 等同于 __name__ == ‘__mail__‘
被执行的脚步,__name_‘值 ==__mail__
return 语句用来从函数中return(返回),也就是说跳出函数。同样,我们也可以从函数中选择性地返回一个值。
1 def maximum(x, y): 2 if x > y: 3 return x 4 elif x == y: 5 return ‘两个数相等‘ 6 else: 7 return y 8 9 print(maximum(2, 3)) 输出:3
Python应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。
python有三种导入模块的方法:
import modname
from modname import funcname as rename
from modname import fa, fb, fc 或者 from modname import *
导入模块时是根据 sys.path这个路径作为基准来进行的.
1 import sys 2 3 print sys.path 4 7 结果: 8 9 [‘/Users/wupeiqi/PycharmProjects/calculator/p1/pp1‘, ‘/usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg‘, ‘/usr/local/lib/python2/
如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append(‘路径‘) 添加
时间: 2024-10-10 22:34:23