Python基础之【第三篇】

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

Python基础之【第三篇】的相关文章

Python 基础【第三篇】输入和输出

这里我们创建一个python(pytest)脚本用于学习测试(以后都为这个文件,不多做解释喽),这个文件必须要有执行权限的哈 1.创建pytest并赋予执行权限 [[email protected]_server py]# touch pytest [[email protected]_server py]# chmod +x pytest 2. 基本输出“print” [[email protected]_server py]# vim pytest #指定python可执行程序路径 #!/u

python基础知识第三篇(列表)

列表 list 类 中提供的方法 li=[1,5,dhud,dd,] 通过list类创建的对象 中括号括起来 逗号分隔每个元素 列表中的元素可以是数字,字符串,也可以是列表,也可以是布尔值 所有的都能放进去 列表可以无限嵌套 就是一个"集合",内部放置任何东西 索引取值 print( li [ 3 ] ) 切片取值 print( li[3:5]) 切片取值也是列表 列表 可以被索引取值的方法和切片的方法 修改元素 支持in操作 判断元素是否在列表里面 删除第一种方式 del lip[1

python基础语法(三)

--------------------------------------------接 Python 基础语法(二)-------------------------------------------- 七.面向对象编程 python支持面向对象编程:类和对象是面向对象编程的两个主要方面,类创建一个新的类型,对象是这个类的实例. 对象可以使用普通的属于对象的变量存储数据,属于对象或类的变量被称为域:对象也可以使用属于类的函数,这样的函数称为类的方法:域和方法可以合称为类的属性. 域有两种类

EnjoyingSoft之Mule ESB基础系列第三篇:Mule message structure - Mule message结构

目录 1. 探索Mule Message结构 2. Mule Message的Payload 3. Mule Message的Property 4. Mule Message的Attachment 5. Mule的Variable 6. 使用Java操作Mule Message Mule ESB是一个使用Java语言编写的开源企业服务总线,企业服务总线英文Enterprise Service Bus,简称ESB.其相关源代码也托管在GitHub上,可以在https://github.com/mu

Python基础(Django三——Model)

本篇内容接上篇Python基础(Django二) 七.Model 1.说明: Model是Django为方便程序操作数据库而诞生的,使用的是ORM模式. 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之间映射的关系,将程序中的对象自动持久化到关系数据库中. 2.使用: 2-1.创建Model(编辑应用目录下的models.py) from django.db

《python基础教程第三版》高清版PDF免费下载

Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 下载地址:网盘下载 编辑推荐 久负盛名的Python入门经典 中文版累计销量200 000+册 针对Python 3全新升级 本书是经典的Python入门教程,层次鲜明.结构严谨.内容翔实,特别是后面几章,作者将前面讲述的内容应用到10个引人入胜的项目中,并以模板的形式介绍了项目的开发过程,手把手教授Python编程实践,让读者从项目中领略Python的真正魅力. 本书既适合初学者夯实基础,又能帮

Python基础—面向对象(进阶篇)

通过上一篇博客我们已经对面向对象有所了解,下面我们先回顾一下上篇文章介绍的内容: 上篇博客地址:http://www.cnblogs.com/phennry/p/5606718.html 面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用: 类是一个模版,模板中包装了多个方法供使用(这里方法就是函数): 对象,根据模板创建的实例,实例用于调用被包装在类中的函数: 面向对象的三大特性:封装.继承.多态. 今天博客的内容主要介绍:Python类的成员.成员修饰符.类的特殊成员.异常处理和

Python基础知识(三) Python编码、变量、if和while语句

Python入门知识 一.第一句Python代码 在Linux下/home/test目录下创建hello.py文件,内容如下: [[email protected] ~]# mkdir /home/test [[email protected] ~]# cd /home/test [[email protected] test]# cat hello.py print("Hello World!") 执行hello.py文件,得到以下内容: [[email protected] tes

Python基础笔记系列三(1):list列表

本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python中的list列表是一种序列型数据类型,一有序数据集合用逗号间隔用方括号括起来,和字符串一样可以通过索引index和切片来访问某个元素或子列表. 元组相当于一个只读的列表,它的元素不可修改. 字典是一种键值对. list列表可以类比于其它语言(如,C语言)的数组,其起始下标为也为0.1.列表的索引访问 1)通过list_name[index]来访问,每个列表的起

python基础汇总(三)

想成为一个优秀的python程序员,从而走上全栈前端工程师的职位,阅读能力是一个必备的能力. 以现在的水平,你还不具备完全理解你找到代码的能力,不过通过接触这些代码,你可以熟悉真正的变成项目是什么样子的. 我将列举一些适合看python代码的网址,很简单,直接看.py结尾的文件都可以.(setup.py的文件就忽略吧) 1.bitbucket.org 2.launchpad.net 3.sourceforge.net 4.freecode.com 大胆阅读吧,人生苦短,我用python. 在开始