Python3中的函数 大全
Python 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。但也可以自己创建函数,这被叫做用户自定义函数。
1.函数的定义:
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
pass 关键字,代表什么都不干
exit(num) 强行退出(num:是一个数字,显示为退出码)
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
def functionname( parameters ):
function_suite return [expression]
默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。
举例1:
def add(x, y):print(“x = {0}”.format(x))
print(“x = {0}”.format(x))
print(“x + y = {0}”.format(x+y))return x+y
举例2:
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/4/14 20:31# @Author : Feng Xiaoqing# @File : demo1.py# @Function: -----------def f(x,l=[]):
for i in range(x):
l.append(i*i)
print(l)# f(2) = f(2, l=[])f(2)# 结果:[0, 1]f(3,[3,2,1])# 结果: [3, 2, 1, 0, 1, 4]f(x=3, l=[])# 结果: [0, 1, 4]
运行结果:
[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 4]
2.函数的调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
如下实例调用了add()函数:
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/4/15 21:01# @Author : Feng Xiaoqing# @File : demo2.py# @Function: -----------# 自定义加法函数add()def add(x,y):
print("{0} + {1} = {2}".format(x,y,x+y)) return
print("finished") #在return后不会执行这条语句# 调用函数,计算2+3的得数add(2,3)
运行结果:
2 + 3 = 5
3.函数的参数
形式参数和实际参数
在定义函数时,函数名后面,括号中的变量名称叫做形式参数,或者称为"形参"
在调用函数时,函数名后面,括号中的变量名称叫做实际参数,或者称为"实参"
def fun(x,y): //形参 print(x + y)
fun(1,2) //实参 3 fun('a','b') ab
函数默认参数:
缺省参数(默认参数)
def fun(x,y=100) print x,y#调用:fun(1,2)fun(1)
定义:
#!/usr/bin/env python# -*- coding: utf-8 -*-def fun(x=2,y=3): print x+y
调用:
fun()#结果:5fun(23)#结果26fun(11,22)#结果:33
我们经常在看别人的代码中,经常出现def(*args, **kwargs)这样的表现形式:
*args 指的是:tuple (1, )
**kwargs 指的是:dict {“k”: “v”}
fun(*args, **keargs)
fun(1, 2, 3, 4, 5, a=10, b=40)
4.函数的返回值
函数返回值:
函数被调用后会返回一个指定的值
函数调用后默认返回None
return返回值
返回值可以是任意类型
return执行后,函数终止
return与print区别
#!/usr/bin/env python# -*- coding:utf-8 -*-def fun(): print 'hello world' return 'ok' print 123fun()#结果hello world123None
5.函数的变量
局部变量和全局变量:
Python中的任何变量都有特定的作用域
在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量
在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。
def fun(): x=100 print x fun() x = 100 def fun(): global x //声明 x +=1 print x fun()print x
外部变量被改(x由100改为101):
x = 100def fun(): global x x += 1 print (x) fun()print (x)#结果101101
内部变量外部也可用:
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/4/15 21:33# @Author : Feng Xiaoqing# @File : demo2.py# @Function: -----------x = 100def fun(): global x x +=1 global y y = 1 print(x) fun() print(x) print(y)#结果:1011011
统计程序中的变量,返回的是个字典
#!/usr/bin/env python# -*- coding:utf-8 -*-x = 100def fun():
x = 1
y = 1
print(locals()) fun()print (locals())
结果:
{'y': 1, 'x': 1}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02FF6390>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/PycharmProjects/PythonLive/untitled/day07/demo2.py', '__cached__': None, 'x': 100, 'fun': <function fun at 0x052D2390>}
6.匿名函数
顾名思义就是没有名字的函数,那为什么要设立匿名函数,他有什么作用呢?
lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方
python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
语法
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
举例:
求两数的乘积:
常规写法:
def fun(x,y)
return x*y
lambda版本写法:
r = lambda x,y:x*y
7.高阶函数
(1)map(f, list)
返回每个元素通过f计算完的value的list
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
举例:计算列表里值的平方
#!/usr/bin/env python# -*- coding:utf-8 -*-def f(x):
return x*xfor i in map(f,[1,2,3,4,5,6,7]):
print(i)
结果:
14916253649
(2)reduce(f,list)函数(求list中数的和)
reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
举例:计算列表中所有数的和
#!/usr/bin/env python# -*- coding:utf-8 -*-from functools import reduce #导入reduce函数def f(x,y):
return x+y
print(reduce(f,[1,2,3,4,5,6,7,8,9,10]))
print(reduce(f,range(1,101)))#结果:555050
(3)filter()函数(过滤)
filter函数接收一个函数f和一个list,函数f的作用是对每个元素进行判断,返回True或者False,filter()根据判断结果自动过滤掉不符合条件的元素,返回符合要求的元素组成的list
filter(lamdba x: x%2 ==1, [1, 2, 3, 4, 5])
举例:计算list中小于7的数
#!/usr/bin/env python# -*- coding:utf-8 -*-for i in filter(lambda x:x<7, [1, 2, 3, 4, 5,40,8]):
print(i)#结果:12345
(4)sorted()函数(排序)
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
# sorted(iterable, key, reverse)# iterable 一个可迭代的对象# key 对什么进行排序# reverse bool类型,如果为true为反序, 默认为false# 返回值是一个list
举例:厦工叉车
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/4/15 22:47# @Author : Feng Xiaoqing# @File : demo3.py# @Function: -----------m = dict(a=1, c=10, b=20, d=15)
print(sorted(m.items(), key = lambda d:d[1],reverse = True)) #按value值倒序排列#结果:[('b', 20), ('d', 15), ('c', 10), ('a', 1)]
Python3中的函数 大全的更多相关文章
- python3内置函数大全(顺序排列)
python3内置函数大全 内置函数 (1)abs(), 绝对值或复数的模 1 print(abs(-6))#>>>>6 (2)all() 接受一个迭代器,如果迭代器的所有 ...
- python3内置函数大全
由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码: https://github. ...
- 用python实现矩阵转置,python3 中zip()函数
前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个元素,比如[1, 2],之后不断的添加新的列表,往原来相应位置添加.例如添加[3, 4]使原列表扩充为[[1, 3], [2, 4]],再 ...
- Python3中map函数的问题
在Python2中map函数会返回一个list列表,如代码: >>> def f(x, y): return (x, y) >>> l1 = [ 0, 1, 2, ...
- python3中reduce()函数的使用方法示例
reduce() 函数会对参数序列中元素进行累积,下面这篇文章主要给大家介绍了关于python中reduce()函数的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学 ...
- python2和python3中filter函数
在python2和python3中filter是不同的,其中在python2中filter返回的是一个list,可以直接使用 >>> a = [1,2,3,4,5,6,7] > ...
- python3中map函数
map函数是Python里面比较重要的函数 map函数后面必须接的是序列(元组/列表/字符串) 在python2中执行一些语句 >>> map(str,[1,2,3,4]) ['1' ...
- python3中匿名函数做参数,匿名函数做实参,eval关键字
一:说到匿名函数,大家都感到陌生又熟悉,今天我带大家了解一下py3中的匿名函数,以及匿名函数作为函数的参数的情况 主要通过以下实例来说明: 实例一: newarr =[33,44444,6222,88 ...
- python3中shuffle函数
1. shuffle函数与其他函数不一样的地方 shuffle函数没有返回值!shuffle函数没有返回值!shuffle函数没有返回值!仅仅是实现了对list元素进行随机排序的一种功能 请看下面的坑 ...
随机推荐
- mysql通过“延迟关联”进行limit分页查询优化的一个实例
最近在生产上遇见一个分页查询特别慢的问题,数据量大概有200万的样子,翻到最后一页性能很低,差不多得有4秒的样子才能出来整个页面,需要进行查询优化. 第一步,找到执行慢的sql,如下: SELECT ...
- Python自动化之ajax返回表单验证的错误信息和序列化扩展
form内置序列化错误 如果使用form提交数据的时候,可以直接返回错误信息到模板里面进行渲染 但是如果使用ajax处理呢 from django import forms from django.f ...
- cpu负载过高分析
如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载? 步骤一.找到最耗CPU的进程 工具:top 方法: 执行top -c ,显示进程运行信息列表 键入P (大写p) ...
- HBase的简单java操作
官方文档:http://hbase.apache.org/book.html java简单操作hbase的表 import org.apache.hadoop.conf.Configuration; ...
- jQuery选择器(上)
一.基本选择器 1.ID选择器 $("#id") 2.类选择器 $(".class") 3.元素选择器 $("element") 4 ...
- Android :Activity、Adapter、List的初步学习
Activity Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行对手机应用操作. 每个 Activity 都会获得一个用于绘制其用户界面的窗口.窗口一般是会充满屏幕,但也不一定 ...
- Scala_类和对象
类是对象的抽象,而对象是类的具体实例.类是抽象的,不占用内存,而对象是具体的,占用存储空间. import scala.beans.BeanProperty class ChecksumAccumul ...
- Cannot find an exact (case-sensitive) match for 'crtbp.m
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=277326&page=1&extra=#pid3296048
- 【转载】CString、BSTR和LPCTSTR之间的区别
原文:http://www.cnblogs.com/GT_Andy/archive/2011/01/18/1938605.html 一.定义 1.CString:动态的TCHAR数组.它是一个完全独立 ...
- 洛咕 P2463 [SDOI2008]Sandy的卡片
哈希水过. 首先这是一段delta相同的序列,按照套路差分一下,b[i]=a[i]-a[i-1],然后就是这些序列的最长公共子段 由于数据范围很小,就可以二分,枚举第一个序列的子段然后每个子序列暴力c ...