Skip to main content
 Web开发网 » 编程语言 » Python语言

Python的函数详解

2021年11月27日6660百度已收录

Python函数总结(一)

一、定义函数

定义函数

函数的定义和调用

1、定义语法

def 函数名(参数1,参数2...):

语句

注意:

1、小括号必须

2、小括号之后要有冒号

3、缩进

2、调用语法

函数名(值1,值2...)

变量名 = 函数名(值1,值2...)

如果名字重名了,后者覆盖前者

示例-1:

def f1():

print('hello you')

def f2():

print('hello me')

#调用函数f1、f2

f1()

f2()

二、函数的文档说明

'''

函数的文档说明

'''

def fly(h):

'''

飞行器飞行的功能

:param h: 高度

:return: True表示成功 False表示失败

'''

print('飞行的高度为:'+ str(h) + "米")

return True

#调用函数

fly(10000)

结果:

飞行的高度为:10000米

三、函数的4种类型

1、无参数无返回值

2、无参数有返回值

3、有参数无返回值

4、有参数有返回值

说明:

1、return 写在函数的运行最后一行,返回值的同时,结束这个函数

2、没有返回值的函数,其实就相当于return None

示例-1:无参数无返回值

def f1():

print('f1为无返回值函数')

f1()

#如果将无返回值函数赋值给变量v,将返回None对象

v = f1()

print(v)

结果:

f1为无返回值函数

f1为无返回值函数

None

示例-2:无参数有返回值

def f2():

sum = 0

i = 0

while(i <= 100):

sum+=i

i = i + 1

return sum

#调用函数

result = f2()

print(result)

结果:5050

示例-3:有参数无返回值

#比较3个数的最大值

def f3(a,b,c):

temp = a ;

if(b > temp ):

temp = b

if(c > temp ):

temp = c

print("3个数最大值为:"+str(temp))

#调用函数

f3(6,8,9)

结果:3个数最大值为:9

示例-4:有参数有返回值

#比较3个数的最大值

def f3(a,b,c):

temp = a ;

if(b > temp ):

temp = b

if(c > temp ):

temp = c

return temp

#调用函数

max = f3(6,8,9)

print("3个数最大值为:"+str(max))

结果:3个数最大值为:9

Python 函数总结(二)

一、函数的参数

函数的参数包括可变和不可变类型。其中可变类型的有:列表、字典、set;

不可变类型的有:整数、浮点数、布尔、空、函数、元组、字符串

示例-1:

list = [1,2,3]

print("list被调用之前:" + str(list))

def f1 (x,list):

list.append(x)

print("list被调用之后:" + str(list))

x = 100

f1 (x,list)

结果:

list被调用之前:[1, 2, 3]

list被调用之后:[1, 2, 3, 100]

二、参数的类型

1、必选参数

按顺序、数量依次赋值。必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

示例:

调用f1()函数,你必须传入一个参数,不然会出现语法错误:

def f1(str):

print(str)

# 调用f1函数

f1("hello you,hello me");

2、默认参数

默认已经赋值了,如果调用的时候没有赋值,就使用默认值,如果赋值了,就使用赋值的。

默认参数必须在必选参数之前的位置。

示例-1:

def f2(x1 = 1 , x2 = 2 ):

print("x1 = " + str(x1) + ", x2 = " + str(x2))

#不使用默认参数x1 , x2

f2(10,20)

#使用默认参数x2

f2(100)

#使用默认参数x1 , x2

f2()

结果:

x1 = 10, x2 = 20

x1 = 100, x2 = 2

x1 = 1, x2 = 2

示例-2:

#报错!默认参数必须在必选参数之前的位置

def f2(x1 = 1 , x2):

print("x1 = " + str(x1) + ", x2 = " + str(x2))

3、不定长参数

你可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数。

不定长参数一个"*"是个元组的数据类型,二个"*"是个字典的数据类型

字典对象实际上就是java里面的Map对象

示例-1:参数是元组数据类型举例

def f( *x ):

#查看参数是什么数据类型(是元组类型)

print(type(x))

print(x)

#参数长度不定

f()

f(1)

f(1,2)

f(1,2,3)

结果:

<class 'tuple'>

<class 'tuple'>

(1,)

<class 'tuple'>

(1, 2)

<class 'tuple'>

(1, 2, 3)

示例-2:参数是元组数据类型举例

def f( *x ):

#既然是元组类型,那么可以使用for输出

for s in x:

print(s)

#参数长度不定

f("aaa","bbb","ccc")

结果:

aaa

bbb

ccc

示例-3:参数是字典对象的数据类型举例

def f ( **key_value ):

#查看带二个"*"参数的是什么数据类型(是字典类型)

print( type(key_value) )

#输出字典对象

print(key_value)

#字典对象没有值

f ()

#字典对象 k1 = "s001" , v1 = "lily"

f (k1 = "s001" , v1 = "lily")

#字典对象 k1 = "s001" , v1 = "lily",k2 = "s002" , v2 = "ada"

f (k1 = "s001" , v1 = "lily",k2 = "s002" , v2 = "ada")

结果:

<class 'dict'>

<class 'dict'>

{'k1': 's001', 'v1': 'lily'}

<class 'dict'>

{'k1': 's001', 'v1': 'lily', 'k2': 's002', 'v2': 'ada'}

示例-4:自定义个字典对象d1

def f ( **key_value ):

#输出字典对象

print(key_value)

#自定义个字典对象d1

d1 = {

"k1":"s001",

"k2":"s002",

"k3":"s003"

#调用字典对象,注意调用的格式:**字典对象

f ( **d1 )

结果:{'k1': 's001', 'k2': 's002', 'k3': 's003'}

示例-5:

#混合使用元组类型和字典类型

def f( *tuple, **kv):

print(tuple)

print(kv)

#前3个被认为是元组的元素,后2个被认为是字典元素

#注意:s001="lily" , s002="赵丽燕"中的s001、s002不能加引号,没有为什么,规定的

f ("aaa","bbb","ccc",s001="lily" , s002="赵丽燕")

结果:

('aaa', 'bbb', 'ccc')

{'s001': 'lily', 's002': '赵丽燕'}

示例-6:

#混合所有类型

def f(x1,x2,x3, *tuple, **kv):

print("x1,x2,x3为:" + str(x1)+"," + str(x2) + "," + str(x3))

print(tuple)

print(kv)

#前3个赋值给x1,x2,x3

#接着3个被认为是元组的元素,后2个被认为是字典元素

#注意:s001="lily" , s002="赵丽燕"中的s001、s002不能加引号,没有为什么,规定的

f (1,2,3,"aaa","bbb","ccc",s001="lily" , s002="赵丽燕")

结果:

x1,x2,x3为:1,2,3

('aaa', 'bbb', 'ccc')

{'s001': 'lily', 's002': '赵丽燕'}

Python函数总结(三)

一、局部变量和全局变量

局部变量:在函数内部定义的变量,用域仅局限于函数内部

全局变量:在函数外部定义,可以在程序的任何位置访问的变量,并且可以多次访问;

在函数内部不能直接修改全局变量,如果要修改,使用global声明

示例-1:

#全局变量

x = 100

#参数x1是局部变量

def f( x1 ) :

#局部变量

x2 = 20

print(x)

示例-2:

#如果想在函数体外使用函数体内定义的变量,须使用global关键字

def f( ) :

#全局变量

global x

x = 100

print(x)

f()

x = x + 1

print(x)

结果:

100

101

示例-3:

当全局变量和局部变量重名时候,在函数内优先使用局部变量

x = 10

def f( ) :

x = 100

print(x)

f()

结果:100

示例-4:

x = 10

def f( ) :

#全局变量

global x

x = 100

print(x)

f()

#global定义的x在函数内部将x值修改:x=100

x = x + 1

print(x)

结果:

100

101

二、递归函数

如果在函数内部调用自己本身,那么这个函数是递归函数。

递归效率有所降低,能用循环实现的,尽量还是用循环实现

示例:斐波那契数列

斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、

def feb(n):

if n == 1:

return 1

if n == 2:

return 1

else:

y = feb(n - 2) + feb(n - 1)

return y

y = feb(10)

print(y)

三、匿名函数

python 使用 lambda 来创建匿名函数。语法:

lambda [arg1 [,arg2,.....argn]]:expression

":"左侧是参数,右侧是返回值

示例-1:

f = lambda x : x + 1

y = f(10)

print(y)

结果:11

上面的函数类似于:

def f():

return x + 1

示例-2:map函数运算

list1 = [1,2,3]

#使用map函数映射列表list1的值到一个匿名函数中,

#匿名函数的作用是计算每个变量的平方

m = map(lambda x : x**2 , list1)

#将map对象m转换为list对象

list2 = list(m)

print(list2)

结果:[1 4 9]

示例-3:

list1 = [1,2,3]

list2 = [4,5,6]

#计算两个列表的和

m = map(lambda x ,y : x + y , list1,list2)

#将map对象m转换为list对象

list = list(m)

print(list)

结果:[5, 7, 9]

四、高阶函数

所谓高阶函数是指那些作用于函数或者返回其它函数的函数,也就是说高阶函数可以得到一个新的函数。python的functools提供

高阶函数

1、partial

为某个函数,赋值一些参数,返回一个新的函数,已经拥有了一些默认值的参数

2、reduce

函数必须有两个参数,作用域集合或者集合加初始值,先取两个值赋值给参数,然后将

函数的返回值再赋值给第一个参数,集合的第二个值给第二个参数

示例-1:

import functools

print(int('1111',8))

print(int('1111',2))

print(int('101001',2))

int2 = functools.partial(int,base=2)

print(int2('110'))

print(int2('111'))

print(int2('111',base=8))

示例-2:

ls = [1,2,3,4,5]

#计算列表所有元素之和

ret = functools.reduce(lambda x,y:x+y,ls)

print(ret)

《大数据和人工智能交流》的宗旨

1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。

2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。

3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。

根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。

根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。

Python的函数详解  Python函数 第1张

评论列表暂无评论
发表评论
微信