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. C#常用函数与方法集合

    1.DateTime   数字型         System.DateTime currentTime=new System.DateTime();    1.1 取当前年月日时分秒         ...

  2. AES前后端加密

    1.前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. js获取来源网址

    举例: 1. a.html文件内容如下: <a href="b.html">浏览b.html </a> 2. b.html文件中的内容如下: <bod ...

  4. free和delete把指针怎么啦?

    别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉. 用调试器跟踪示例7-5,发现指针p被free以后其地址仍然不变(非NULL) ...

  5. C++ writestring 为什么不能写进中文 CStdioFile向无法向文本中写入中文【二】

    本地化设置需要具备三个条件:a. 语言代码 (Language Code)b. 国家代码 (Country Code) c. 编码(Encoding)本地名字可以用下面这些部分来构造:语言代码_国家代 ...

  6. 将window上的项目上传到自己的github

    使用git 1.首先在自己的github上面新建仓库 2.记下远程仓库的地址 3.在要上传的项目的目录下使用git命令进行上传 (1)先git init 初始化本地的仓库 (2)git add -A ...

  7. jauery-layer弹出框的使用

    一布局: <div id="detailLayer"> <div class="box-header"> <div class=& ...

  8. Gradle 1.12用户指南翻译——第六十四章. 发布到Ivy(新)

    其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...

  9. js之留言字数限制

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. centos7 安装php 5.x.x 报错

    错误1: /usr/src/php-5.2.9/ext/dom/node.c:In function 'dom_canonicalization': /usr/src/php-5.2.9/ext/do ...