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: ()

老齐python-基础8(函数)的更多相关文章

  1. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  2. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  3. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  4. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  5. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  6. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  7. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

  8. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  9. 第七篇 python基础之函数,递归,内置函数

    一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...

  10. Python学习笔记(一)python基础与函数

    1.python基础 1.1输入与输出 输出 用print加上字符串,就可以打印指定的文字或数字 >>> print 'hello, world' hello, world > ...

随机推荐

  1. 005——数组(五)array_diff_ukey()array_diff_uassoc()array_intersect()array_intersect_assoc()array_intersect_key()array_intersect_ukey()array_intersect_uassoc()

    <?php function dump($arr) { print_r($arr); } /**array_diff_ukey() 通过回调函数的方式,返回一个数组在其他数组中不存在键名的值 * ...

  2. DIV+ul+LI实现表格效果以及div带滑动条

    写这个是为了给自己一个好好的笔记,以免下次需要的时候又到处找,费神费事费时费力.开始吧! 1.先看看效果 2.网页代码 <!DOCTYPE html PUBLIC "-//W3C//D ...

  3. 快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0

    487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 247781   Accepted: 44015 Descr ...

  4. 【zznu-2060】 Minsum Plus(最小正子段和)

    题目描述 题意简单到令人发指! 序列A由N个整数组成,从中选出一个连续的子序列,使得这个子序列的和为正数,且和为所有和大于零的子序列中的最小值. 将这个值输出,若无解,输出no solution. 输 ...

  5. bzoj1800

    题解: 暴力枚举,然后判断是否是矩形 代码: #include<iostream> #include<cstdio> using namespace std; ],dis[]; ...

  6. 第5课:内置函数、处理json、常用模块

    1. 内置函数 1)常用的内置函数 print(all([0, 2, 3, 4])) # False,判断可迭代的对象里面的值是否都为真 print(any([0, 1, 2, 3, 4])) # T ...

  7. Appium 测试APK

    介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及FirefoxOS平台测试.Appium使用WebDriver的json w ...

  8. shell脚本实例三

    练习一:获得连通主机的ip和hostname1.脚本编写 vim  checkhost.sh #!/bin/bashAuto_conn(){/usr/bin/expect << EOFse ...

  9. oracle和sql server 比较

    Oracle   SQLServer   比较 字符数据类型  CHAR  CHAR  都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb 变长字符数据类型  ...

  10. XML 测验

    测试地址http://www.w3school.com.cn/quiz/quiz.asp?quiz=xml 1.XML指的是? 您的回答:eXtensible Markup Language 2.XM ...