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. yii控制布局方式

    1:在控制器内成员变量设置 public $layout = false; //不使用布局 public $layout = “main”; //设置使用的布局文件 2:在控制器成员方法内设置 $th ...

  2. hdu4678 Mine 规律或者博弈。(博弈的sg函数不懂我是找的规律)

    链接:题意就是告诉你一个扫雷图里面每个雷的位置,有两个人,每个人都知道雷的确切位置,每个人一次可以点一部,问你谁能赢. 链接:http://acm.hdu.edu.cn/showproblem.php ...

  3. 033——VUE中安装使用vue-devtools调试工具用于监控数据变化

    vue官网:https://cn.vuejs.org/ 下的官方仓库:vue-devtools  安装到火狐或谷歌下都可以,安装成功之后,按F12查看就可以了

  4. CF 187C Weak Memory 优先队列 难度:2

    http://codeforces.com/problemset/problem/187/C 这道题可以用二分+dfs检测,或者优先队列解 此处用了优先队列解法 从起点出发,维护一个优先队列,内容是p ...

  5. Java常用类:StringBuilder

    一.介绍 2 3 4 5 //同样,StringBuilder也是final修饰的不可变,相比String来说,继承了AbstractStringBuilder,StringBuffer也是同样继承了 ...

  6. fidder设置断点,修改请求参数等

    设置断点(来自:http://jingyan.baidu.com/article/17bd8e52216c8d85ab2bb8e9.html): 可以看到当前有一个抓取的很多的包的链接的地址的信息,那 ...

  7. redis的list类型以及其操作

    lists类型 给你个图;' lists类型以及操作List是一个链表结构,主要功能是push.pop.获取一个范围的所有值等等,操作中key理解为链表的名字.Redis的list类型其实就是每一个子 ...

  8. L166

    THE idea of underwater mining is not restricted to the ocean floor (see article). High water tables ...

  9. New Concept English three (22)

    34w 54 Some plays are so successful that they run for years on end. In many ways, this is unfortunat ...

  10. 关于str==null与str.trim().equal("")用作判断的疑问

    今天同学调试jsp页面的表单传值, 从a.jsp页面提交表单数据(就一项数据)到b.jsp页面, 在b.jsp页面设置一个判断,来检验接收到的数据是否为空, 若使用str==null做判断,无传值过来 ...