码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础知识-09-函数

时间:2019-04-09 18:53:46      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:自定义   表达式   小马过河   range   view   代码冗余   小马   封装   相同   

 

python其他知识目录

1、函数介绍

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()
。但你也可以自己创建函数,这被叫做用户自定义函数。

2、函数使用优缺点:

公司随随便便几百上千行。可读性,重用性,函数,面向过程编程
优点:
缺点:
面向过程,可以将可重复性的代码做成一个函数,用参数代替变化的量,实现具有重复性操作的功能。
当事物需要做这个操作的时候,调用函数即可实现功能。#自己理解
#发邮件:设置里面开启pop3,smtp服务器 ,往smtp服务器发邮件
比如发邮件,很多对象都使用的一个动作,写成函数,调用函数。避免代码冗余。
什么情况写函数,就是为了能重复使用某个功能,就写成函数,一个功能一个函数。
函数式编程是做什么的?避免重复性代码。代码拆分,增强可移植性,可读性

本质:将N行代码拿到别处并给他起个名字,以后通过名字就可以找到这段代码并执行。
场景:代码重复执行。
代码量特别多超过一屏,可以选择通过函数进行代码的分割。

3、函数定义:

你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

语法:
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

函数执行:
def xiaoma():
print("魔降风云变")
xiaoma()
---------结果:
魔降风云变

4、函数调用

定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。

这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执
行。
函数不调用,内部代码不执行。调用后用不用变量接收返回值,函数都会执行。

def xiaoma():
    print("魔降风云变")
xiaoma()
---------结果:
魔降风云变

def xiaoma():
    print("魔降风云变")
a=xiaoma()
----------结果:
魔降风云变

5、函数传参

不同的对象做相同的操作,可以定义函数。如果每个对象还有些区别,那么有区别的地方使用函数传参

定义带参数的函数的时候
函数式编程。通过传参,返回不同的值,返回不同的参数。同一个功能不同的地方就使用传参
形式参数(形参):形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有
意义。相当于变量。
实际参数(实参):实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等

函数里面使用字符串格式化
函数可以定死了,也可以传递变量。写函数不一定需要参数。如果有变的,使用参数,没有变的就定死
了就可以,看实际情况了。

5.1没有函数传参
案例1:
使用函数只计算某一个列表内元素的和:
def list_sum():
    li = [1, 2, 3]
    sum=0
    for i in li:
        sum+=i
    print(sum)
list_sum()
-----------结果
6

5.2一个函数传参:
案例2:
使用函数计算指定列表内元素的和:
def list_sum(li):
    sum=0
    for i in li:
        sum+=i
    print(sum)
info=[1,2,3]
list_sum(info)
-------------结果:
6

报错问题1:
报错:函数没有形参,调用函数时带着参数的报错:
def list_sum():
    sum=0
    for i in li:
        sum+=i
    print(sum)
info=[1,2,3]
list_sum(info)      #调用时,可以直接做参数,也可以用变量做实参
-------------------结果:
list_sum(info)
TypeError: list_sum() takes 0 positional arguments but 1 was given

5.3多个函数传参:
def xiaoma(arg1,arg2):
    print(arg1+arg2)
xiaoma(2,3)
-----------结果:
5

报错问题2:传参传少了
def xiaoma(arg1,arg2):
    print(arg1+arg2)
xiaoma(2)
-----------结果:
    xiaoma(2)
TypeError: xiaoma() missing 1 required positional argument: arg2

报错问题3:传参传多了
def xiaoma(arg1,arg2):
    print(arg1+arg2)
xiaoma(2,3,4)
------------结果:
  xiaoma(2,3,4)
TypeError: xiaoma() takes 2 positional arguments but 3 were given

函数:增加代码重用性,可读性。
比如去楼下拿快递,是个函数,告诉他拿**的快递,他就拿到**的快递

6、函数返回值return

1) print 和 return 的区别,print 仅仅是打印在控制台,而 return 则是将 return 后面的部分作
为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事。
2)函数需要先定义后调用,函数体中 return 语句的结果就是返回值。如果一个函数没有 reutrn 语句
,其实它有一个隐含的 return 语句,返回值是 None,类型也是 ‘NoneType‘。
3)return作用:结束函数调用、返回值
4)终止函数的方法:满足某个条件 return False
成功与不成功返回一个结果。如果不需要打印,用户只需要某个结果,那么让函数返回一个值,让用户
根据返回值做对应的操作。return实现函数返回值。
调用函数,并用变量接收函数的返回值。

6.1使用变量接收返回值:

def xiaoma():
    a=1
    return a
mcw=xiaoma()
print(mcw)
------------结果
1

6.2用户根据函数返回值做别的操作。(根据返回值进行通信)

#当小明吃完饭,给我返回1。小明吃完后小马过河找他玩

def xiaoming(arg):
    a=0
    if arg=="吃完":
        a=1
    return a
status=xiaoming("吃完")
if status==1:
    print("小马过河去找小明玩")
--------------结果:
小马过河去找小明玩

6.3返回多个值的方法:

如果程序需要有多个返回值,则既可将多个值包装成列表之后返回,也可直接返回多个值。如果 Python
函数直接返回多个值,Python 会自动将多个返回值封装成元组。

def list_sum(li):
    sum=0
    e_str=""
    for i in li:
        e_str+=str(i)
        sum+=i
    return sum,e_str
li=[1,2,3]
mcw=list_sum(li)  # 获取list_sum函数返回的多个值,多个返回值被封装成元组
v1,v2=list_sum(li)               #此外,也可使用 Python 提供的序列解包功能,直接使用多个变量接收函数返回的多个值。
print(mcw)
print(v1,v2)
---------------结果:
(6, 123)
6 123

6.4return终止循环

def mcw():       #没有return的时候,返回值默认是None,循环正常结束。
    for i in range(1,4):
        print(i)
m=mcw()
print(m)
-------------结果:
1
2
3
None

def mcw():    #有return的时候,返回指定的值,并终止函数向后继续执行了。
    for i in range(1,4):
        if i==3:
            return "终止函数了"
        print(i)
m=mcw()
print(m)
-------------结果:
1
2
终止函数了

7、上述总结

没传参的函数,有传参的函数,没返回值的函数,有返回值的函数。既有传参又有返回值的函数。需要
什么样的根据具体需求。
#自我总结

 


参考链接:
http://www.runoob.com/python3/python3-function.html
https://www.cnblogs.com/i-honey/p/7679897.html
http://c.biancheng.net/view/2248.html

参考续集

http://c.biancheng.net/view/2247.html

Python基础知识-09-函数

标签:自定义   表达式   小马过河   range   view   代码冗余   小马   封装   相同   

原文地址:https://www.cnblogs.com/machangwei-8/p/10678630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!