老齐python-基础8(函数)
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(函数)的更多相关文章
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- 第七篇 python基础之函数,递归,内置函数
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- Python学习笔记(一)python基础与函数
1.python基础 1.1输入与输出 输出 用print加上字符串,就可以打印指定的文字或数字 >>> print 'hello, world' hello, world > ...
随机推荐
- 安装magento主题模板
magento 的强大功能自不必说, 另外还有一点更重要的是拥有很多顶级的精致模板开发者和爱好者的支持开发出种类繁多, 用途各异的模板, 深受用户的喜爱, 但是安装模板对于初次使用者或者很久没有使用者 ...
- js字符串操作方法
1.字符方法: str.charAt(): 可以访问字符串中特定的字符,可以接受0至字符串长度-1的数字作为参数,返回该位置下的字符,如果参数超出该范围,返回空字符串,如果没有参数,返回位置为0的字符 ...
- iOS笔记之常用工具
CocoaPods: 类库管理工具,使用教程见http://www.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-depende ...
- (转)MapReduce Design Patterns(chapter 6 (part 2))(十二)
Chain Folding 这是对job 链的一种优化.基本上是一种大体规则:每条记录都会提交给多个mapper,或者给reducer然后给mapper.这种综合处理方法会节省很多读文件和传输数据的时 ...
- [置顶]
kubernetes1.8发布跟踪
一.Kubernetes发布历史回顾 1. Kubernetes 1.0 - 2015年7月发布 2. Kubernetes 1.1 - 2015年11月发布 3. ...
- FFmpeg再学习 -- FFmpeg+SDL+MFC实现图形界面视频播放器
继续看雷霄骅的 课程资料 - 基于FFmpeg+SDL的视频播放器的制作最后一篇,主要是想学一下 MFC 创建和配置. 一.创建 MFC 工程 文件->新建->项目->Visual ...
- 基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控
前言 随着互联网的发展,尤其是移动互联网,基于H5.微信的应用越来越多,企业也更多地想基于H5.微信公众号来快速开发和运营自己的产品,那么传统的安防IPC所输出的各种RTSP.GB28181.SDK视 ...
- 深度学习(六十九)darknet 实现实验 Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffma
本文主要实验文献文献<Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization ...
- Python中基本的读文件和简单数据处理
Python中基本的读文件和简单数据处理 暂无评论 DataQuest上面的免费课程(本文是Python基础课程部分),里面有些很基础的东西(csv文件读,字符串预处理等),发在这里做记录.涉及下面六 ...
- Linux系统中的一些重要的目录
Linux系统中的一些重要的目录 1)bin目录 :基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, mkdir等.这个目录中的文件都是可执行的,一般的用户都可以使用2)sb ...