python函数作用的描述_python基础之函数内容介绍
发布日期:2022-02-04 01:43:54 浏览次数:29 分类:技术文章

本文共 3045 字,大约阅读时间需要 10 分钟。

一.函数

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

1.函数定义

def 函数名(参数)

......

函数体

......

返回值

a.使用def关键字创建函数

b.函数名,def后面紧跟着的是函数名,每个函数都需要有个函数名

c.函数参数,分无参函数和有参数函数(下面详解)

d.函数体,实现函数功能的语句组合

e.返回值,返回函数执行结果数据给函数调用者

2.函数的使用

函数在定义完后是不执行函数体的,当python解释在读到def定义的函数名时,在内存中开辟一块空间把函数放进去,函数名作为变量明指向该内存空间,函数在调用的时候才执行函数体。在执行函数体时,一旦执行到return语句,函数执行过程立即终止(即使函数体中还有未执行的语句)返回值给调用函数,如果函数体中没有return语句,默认返回None给调用函数。

3.函数的参数

函数分为无参函数和有参函数;函数在定义的时候如果有参数统一称为形式参数,调用函数时传递的参数称为实际参数

3.1 普通参数

函数定义了几个参数,在调用的时候就需要传递几个参数(形参中有默认值的除外),传多或传少了在执行的时候会报错,传递实参时默认是和形参一一对应的。

#普通参数

def send(f1,f2): #定义了2个形参

#函数体

print(f1,f2)

return True

em=input('请输入邮件地址:')

result=send(em,'hello') # 需要传递2个实参

if result == True:

print('发送成功')

else:

print('发送失败')

3.2 默认参数

形参中参数有默认值的参数,如果设置了默认参数,那么默认参数必须放到参数列表的最后面;调用的时候位置参数在前,关键字参数要在后面。

#默认参数,调用的时候可以不用传递值,也可以从新传递值

def send(f1,f2,XX='OK'): #位置参数要在关键字参数前面,默认参数在调用的时候可以传参也可以不传

#函数体

print(f1,f2,XX)

return True

em=input('请输入邮件地址:')

result=send(em,'hello') #传递2个实参,不改变默认参数的值

re=send(em,'hel','NO') #传递3个实参,改变默认参数的值

if result == True and re == True:

print('发送成功')

else:

print('发送失败')

3.3 指定参数

#指定参数

def send(f1,f2,XX='OK'):

#函数体

print(f1,f2,XX)

return True

em=input('请输入邮件地址:')

re=send(f1=em,f2='hel',XX='NO') #调用的时候指定参数值,参数名要和形参里一致(顺序到不必一致)

if re == True:

print('发送成功')

else:

print('发送失败')

3.4 动态参数

3.4.1 参数前面有一个*的参数

如果在形参前加一个*那么它就是元祖,可以接收任意个实际参数(形参前面加一个*号,在调用的时候该加*的形参可以接收传递的任意个实参,而不报错);如果在调用的时候传递的实参前面也有个*,那么就是把该实参里每个元素循环取出作为元素赋值给函数的形参,如果调用的时候前面不加*就是把该元祖实参作为一个子元祖传递给形参。

def func(*args):

print args

# 执行方式一

func(11,33,4,4454,5)

# 执行方式二

li = [11,2,2,3,3,4,54]

func(*li)

3.4.2 两个*的参数

两个**的参数,是字典, 如果在形参前加两个**那么它就是字典;调用的时候需要指定k和v,那么参数调用只能以指定参数来调用或传递的实参前面也有2个*(这个实参必须是字典),那么就 是把该实参赋值给函数的形参,如:

def func(**kwargs):

print args

# 执行方式一

func(name='wupeiqi',age=18)

# 执行方式二

li = {'name':'wupeiqi', age:18, 'gender':'male'}

func(**li)

3.4.3 万能参数

def fname(*args,**kwargs) #只能一个*的在前面,2个*的在后面

print(args)

print(kwargs)

fname(11,22,33,k1='v1',k2='v2')

3.5 用动态参数实现format功能

format的函数形式是: format(*args,**kwargs)

1)位置参数

fstr='I am is {0},my age is {1}' #这里的0和1代表第几个参数

print(fstr.format('alex',22))

li=('alex',33)

print(fstr.format(*li))

2)变量参数

fstr2='I am is {name},my age is {age}'

print(fstr2.format(name='pwj',age=21))

ld={'name':'sindy','age':18}

print(fstr2.format(**ld))

4.全局变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时:

在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

全局变量,默认用大写变量名

对全局变量进行重新赋值,需要先global

name='wpj' #全局变量

age=22

def f1():

global age #先global,再重新赋值

age=22 #x修改全局变量,前面加global

name='alex' #这是局部变量,只在该函数里生效,优先使用自己的

print(name)

def f2():

print(name) #引用的是全局变量

f1()

f2()

5.三元运算

是if ..else ..的简写,

res= 1 if True else 2,如果if后面的条件为True那么res=1,否则res=2

6.lambda表达式(匿名函数)

匿名函数,lambda后面冒号前面跟的是参数(可以多个),冒号后面跟的是函数体(一句)隐含了return功能, 例如:f2=lambda a1,a2:a1+a2+100

7.常用内置函数的介绍

abs() #取绝对值

all(迭代对象) #一个为假,结果为假,all([11,22,33,0])结果为False

any(迭代对象) #,一个为真,结果为真,any((22,(),0)) 结果为True

bin() #把十进制转换成二进制,print(bin(5)) #结果:0b101

oct() #把十进制转换成八进制,print(oct(9)) #结果:0o11

hex() #把十进制转换成十六进制,print(hex(14)) #结果0xe

ascii()#自动执行对象的__repr__方法

callable() #判断对象是否是可调用对象

转载地址:https://blog.csdn.net/weixin_39603908/article/details/110327848 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:csv逗号分隔符转换_文件系统(02):基于SpringBoot管理Xml和CSV
下一篇:python存数据到impala_0039-如何使用Python Impyla客户端连接Hive和Impala

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月23日 14时46分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章