Python的函数介绍

函数

概念:
在一个完整的项目中,某些功能可能会反复地使用,这时我们会将这些功能封装为函数,然后当我们使用的时候直接调用函数就行。
本质:
功能的封装就是函数。
优点:
1.简化代码结构,增加了代码的重复使用的程度
2.修改、维护、调试方便

一、创建和调用函数

用法

'''
def(关键字) 函数名():
	函数体
	return 返回表达式
函数名() #调用
'''
#函数名可以大小写字母、下划线开头,不能数字开头
def func():
	a=1
	b=2
	print('这是返回值%d'%(a+b))
func()

###############################
这是返回值3

二、函数的参数

概念:函数的参数就是放在括号里的东西,可以个性化

def func(grade):    #括号里的参数近似相当于变量
	print('我的成绩为:'+grade)
func('100')

################################
我的成绩为:100

三、函数的返回值

概念:如果我们需要函数返回数据的执行结果,而不是我们给定的结果,那就使用函数中的关键字:return+制定的返回值

def func(a,b):
	return a+b
print(func(1,2))	

################################
3

注意:当函数内部使用的是return的时候,必须调用print(),不然会没有输出结果

四、函数的参数

意义:如果函数没有了参数,那么函数将变得非常单一和死板,相对应地也将执行单一的功能
1.形参和实参
概念:参数从调用的角度来讲,分为形式参数(形参)和实际参数(实参)。
形参:函数创建和定义过程中小括号里面的参数
实参:函数在调用的时候传递进来的参数或者值

str1 = '满分'
def func(grade):  #小括号里面的grade就是形参
	return grade
print(func(str1))  #调用时候的参数就是实参

#####################################
满分

2.关键字参数
概念:普通的参数叫位置参数,在调用的时候,我们可能会粗心传递错参数顺序导致结果和我们预期的不一致,比如:

def func(fruit,color):
	print(fruit,'这个水果是',color,'色')
func('红','apple')	

####################################
红 这个水果是 apple 色

使用关键字参数:

def func(fruit,color):
	print(fruit,'这个水果是',color,'色')
func(color='红',fruit='apple')	

##############################
apple 这个水果是 红 色

3.默认参数
概念:默认参数实在设定形参的时候给形参赋的值(区别于关键字参数

def func(fruit='Apple',color='是红色'):
	print(fruit,color)
func()

################################
Apple 是红色	

func(fruit='Pear',color='是黄色')#在传递参数过程中,替换了默认的值

#####################################
Pear 是黄色

4.位置可变参数(可变参数)
概念:在不知道特定情况下用到多少参数的时候在参数前面加(*)星号

def func(*test):
	print('test有%d个参数'%len(test))
	print('最后一个参数是',test[-1])
	print(type(test))
	print(test)
func(1,2,2,4,5,5,3)

#################################
test有7个参数
最后一个参数是 3
<class 'tuple'>
(1, 2, 2, 4, 5, 5, 3)

5.关键字可变参数()
概念:该形式参数可以接受任意多个传入的键-值对参数(关键字实参),而且接受的参数将会以字典的方式组织

def func(**kwd):
	print(kwd) #kwd以字典的方式组织传入的关键字实参
func(fruit='apple',price=10)	

######################################
{'fruit': 'apple', 'price': 10}

注意:当位置可变参数 (args)和关键字可变参数(**kwd)一起使用时,必须先声明位置可变参数(args),最后声明关键字可变参数(**kwd)

五、函数的范围

1.函数的过程
理解:在python中,只有函数没有过程

def func():
	print(123)
print(func())

###############################
123
None
#没有return默认返回一个None	

2.返回值
理解:python可以利用序列打包多种类型的一次性返回值

def func():
	return 1,2,3,4
print(func())

###############################
(1, 2, 3, 4)

3.变量的作用域
理解:变量的作用域也就是类似于变量可见性

def func(gra,num):
	count_grade=gra*num
	return count_grade

final_grade=func(80,5)
print(final_grade)
print(count_grade)

###################################
400
NameError: name 'count_grade' is not defined

注意:错误的原因因为‘count_grade’没有被定义过,因为它是func函数内部定义的,只有在函数内部才有效,函数外调用就失效了,这种变量称为局部变量
和局部变量相对应的就是全局变量,全局变量的作用域大于局部变量
example1:

def func(gra,num):
   count_grade=gra*num
   print(grade)
   return count_grade

grade=80
final_grade=func(80,5)
print(final_grade)

###########################
80
400

example2:

def func(gra,num):
   count_grade=gra*num
   grade=100
   print('in_grade:',grade)
   return count_grade

grade=80
final_grade=func(80,5)
print('out_grade:',grade)
print(final_grade)

#############################
in_grade: 100
out_grade: 80
400

注意:在这里函数内部的grade是python自己创建的新的局部变量,和外部的grade没有关联
4.global关键字
概念:如上述例子可见python对于全局变量的保护,这种保护有时候会影响代码的维护,所以就有了global关键字解决

def func(gra,num):
   count_grade=gra*num
   global grade
   grade = 100
   print('in_grade:',grade)
   return count_grade

grade=80
final_grade=func(80,5)
print('out_grade:',grade)
print(final_grade)

##################################
in_grade: 100
out_grade: 100
400

六、内嵌函数和闭包

1.内嵌函数
概念:允许在函数内部创建另一个函数

def func1():
	print('func1')
	def func2():
		return 'func2'
	return func2()
print(func1())	

############################
func1
func2

注意:func2是func1的内部函数,所以它的作用域也在func1函数体内,在外部调用会报错
2.闭包
概念:一个内部函数里,对外部的作用域(非全局作用域)的变量进行引用,那么内部函数就被认为是闭包,闭包是函数重要的组成结构

def func1(x):
	def func2(y):
		return x*y
	return func2 #这里不用括号

#调用格式1
a=func1(10)
print(a(5))
#调用格式2
print(func1(10)(5))

#########################
50
50	

注意:它和内嵌是一个意思,不能直接调用func2,会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值