您的位置:首页 > 编程语言 > Python开发

老齐python-基础8(函数)

2017-09-18 16:51 134 查看
1、函数基本概念



2、理解函数

python中一个函数,就是一种映射关系

3、定义函数

#!/usr/bin/env python
#coding:utf-8

def add_function(a,b):
c = a+b
return c

if __name__ == "__main__":
result = add_function(2,3)
print(result)


def:是函数的开始,在声明要建立一个函数的时候,一定要使用def(define),意思就是告知python解析器,这里要声明一个函数。def所在的哪一行,包括后面的add_function(a,b)被称为函数头。

add_function:是函数名称。取名是有讲究的,在python中取名字的讲究就是要有一定的意义,能够从名字中看出这个函数是用来干什么的。

(a,b)是参数列表,要写在括号里面。这是一个变量(参数)列表,其中的变量(参数)指向函数的输入。

: 非常重要,如果少了,就会报错

c = a + b ,这一行开始就是函数体,函数体是缩进了4个空格的代码块,完成你需要完成的工作,

return c ,需要缩进4个空格,return是函数的关键字,意思是要返回一个值。return语句执行时,python跳出当前的函数并返回到调用这个函数的地方,在下面,有调用这个函数的地方 :result = add_function(2,3)但是,函数中的return语句也不是必须要写的,如果不写,python将认为以return None作为结束。也就是说,如果函数中没有return ,事实上在调用的时候,python也会返回一个结果None

if __name__ == "__main__":

result = add_function(2,3)

总结:

def 函数名(参数1,参数2,...参数n):

函数体(语句块)

4、标准

函数名的命名规则要符合python中的命名要求,一般用小写字母和单下划线、数字等组合。

def是定义函数的关键词,这个简写来自英文单词define

函数名后面是圆括号,括号里面可以有参数列表,也可以没有参数。

千万不要忘记括号后面的冒号

函数体(语句块),相对于def缩进,按照python习惯,缩进4个空格

多态:

>>> add("qiw","sir")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'add' is not defined
>>> def add(x,y):
...     return x+y
...
>>> add("qiw","sir")
'qiwsir'
>>> add("qiwsir",4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in add
TypeError: Can't convert 'int' object to str implicitly


  对象有类型,变量无类型

>>> add
<function add at 0x7fabf4c30b70>
>>> type(add)
<class 'function'>
>>> r = add
>>> r
<function add at 0x7fabf4c30b70>
>>> r(3,4)
7
>>> add(3,4)
7
>>> type(r)
<class 'function'>


  

5、命名总结

变量:变量名全部小写,由下划线连接各个单词,注意,变量的命名不要与Python保留的关键字冲突

文件名:全小写,可始用下划线

函数名:小写,可以始用下划线风格的单词,以增加可读性。

函数的参数:命名方式同变量(本质上就是变量)

6、函数调用

降低编程难度

代码重用

>>> add(10,3)
x=10
y=3
13
>>> add(x=10,y=3)  #指定函数变量值
x=10
y=3
13
>>> add(y=10,x=3)
x=3
y=10
13
>>> def times(x,y=2):   #创建函数内变量默认值
...   print("x={}".format(x))
...   print("y=",y)
...   return x * y
...
>>> times(2)
x=2
y= 2
4
>>> times(3,4)  #改变函数内变量默认值
x=3
y= 4
12

>>> def foo():    #函数嵌套,调用一个不存在的函数
...   print('Hello,Teacher Cang!')
...   bar()
...
>>> foo()
Hello,Teacher Cang!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in foo
NameError: name 'bar' is not defined
>>> def bar(): pass  #定义函数体内函数,pass表示什么也不做
...
>>> foo()
Hello,Teacher Cang!


7、函数返回值

斐波那契数列:

#!/usr/bin/env python3
# encoding: utf-8

"""
@version: ??
@author: tajzhang
@license: Apache Licence
@file: fbnq.py
@time: 2018/2/28 11:49
"""

def fibs(n):
result = [0,1]
for i in range(n-2):
result.append(result[-2] + result[-1])
return  result
if __name__ == "__main__":
lst = fibs(10)
print(lst)


 返回多个值 

>>> def my_fun():
...   return 1,2,3
...
>>> a = my_fun()
>>> a
(1, 2, 3)
>>> type(a)
<class 'tuple'>
>>> x,y,z = my_fun()
>>> print(x,y,z)
1 2 3


>>> def foo():   #定义空函数
...   pass
...
>>> print(foo())  #返回空值
None

>>> def my_fun():  #return中断函数体过程
...   print("I am coding.")
...   return
...   print("I finished.")
...
>>> my_fun()
I am coding.


定义函数中的帮助属性

#!/usr/bin/env python3
# encoding: utf-8

"""
@version: 1.0
@author: tajzhang
@license: Apache Licence
@file: fbnq.py
@time: 2018/2/28 11:49
"""

def fibs(n):
"""
This is a Fibonacci sequence.    #定义doc方法输出内容
"""
result = [0,1]
for i in range(n-2):
result.append(result[-2] + result[-1])
return  result
if __name__ == "__main__":
lst = fibs(10)
print(lst)
print(fibs.__doc__)    #打印doc


>>> my_fun()
I am coding.
>>> def cang():
...   """This is a function of canglaoshi"""
...   pass
...
>>> cang.__doc__
'This is a function of canglaoshi'
>>> cang.breast = 90     #增加函数属性
>>> cang.breast
90
>>> cang.__name__
'cang'
>>> cang.__module__
'__main__'


传递多个参数

arg、args

>>> def func(x,*arg):  #将其它参数组成元祖
...   print(x)
...   result = x
...   print(arg)
...   for i in arg:
...     result += i
...   return result
...
>>> func(1,2,3,4,5,6,7,8,9)
1
(2, 3, 4, 5, 6, 7, 8, 9)   #arg或args 将多个参数揉进一个元祖
45 


>>> def foo(x,*args):
...   print("x:",x)
...   print("tuple:",args)
...
>>> foo(7)   #定义函数给args传入空值
x: 7
tuple: ()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: