函数的定义和使用

函数

函数的定义:

  • 语法:
'''def 函数名(形参):
	函数说明文档(说明书)
	函数体(代码块)
===========================================================================================
def---定义函数的关键字,
函数名---变量
()---固定写法
形参---以变量‘变量一,变量二……’形式存在
形参的作用:将函数外的数据传入到函数内,定义函数不一定要定义形参
函数说明文档———— 说明书,辅助我们理解函数的使用说明文档相当于多行注释(不一定要写)
函数体———— 实现功能的代码块
===========================================================================================
使用(调用)函数的语法:
函数名(实参)

函数名—— 告诉程序使用那个函数
实参 —— 实参是向形参传递值的变量,实参和形参一一对应,实参和形参同时出现
==========================================================================================
return的使用
函数内部产生的数据默认不会向函数外部传递
return:将函数内部产生的结果传递到函数外部
return:函数内部触发了return,函数立即停止执行
'''
		

上课时的例子:实现阶乘函数的实现:

# 函数的定义
def func1(N):
	sum = 1
	for i in range(1, N+1):
		sum *= 1
	return f'{N}的阶乘为{sum}'

# 函数的使用:
func1(4)
func1(5)
func1(6-3)

# 结果:
# 4的阶乘为24
# 5的阶乘为120
# 3的阶乘为6

练习:

1.编写一个函数,交换指定字典的key和value,并返回到函数外部
dict1 = {‘a’:1, ‘b’:2, ‘c’:3} --> {1:‘a’,2:‘b’,3:‘c’}

# 函数的编写:
def exchange(dict1_):
	#字典推导式:
	dict_2 = {value, key for key, value in dict_1.items()}
	return dict_2
	

# 函数的调用
a = exchange({'a':1, 'b':2, 'c':3} --> {1:'a',2:'b',3:'c'})
print(a)
#结果:
#  {1: 'a', 2: 'b', 3: 'c'}

2.写一个自己的endswith函数,判断一个字符串是否是另一个字符串的结尾.

# 编写函数
def endswith_1(str_1, str_2):
   if str_1[-len(str_2):] == str_2:
   	return True
   else:
   	return False

#  函数调用:
print(my_endswith('abc123ba', 'ba'))
print(my_endswith('abc123ab', 'ba'))
# 结果:
# True
# False

函数的参数:

  1. 关键字参数:调用函数时让形参和实参一一对应
  2. 让实参通过关键字(形参名)对应
  3. 关键字参数和位置参数混用,关键字参数一定要在位置参数后面。
  4. 不定长参数:函数中在形参前加*或者**,就可以让参数变成不定长参数,不定长的形参可以同时接收多个实参。

1):带一个的不定长参数
的参数会变成一个元组,元组中的元素就是对应的实参

2):带**的不定长参数
带** 的不定长参数会变成一个字典,调用的时候只能用关键字参数传参,每个关键字就是字典的key,数据就是value

3):带* 的参数和带** 的参数可以同时出现,但是带*必须在带**的前面
4):带*的参数必须使用位置参数传参,带**的参数必须使用关键字参数传参

def func4(*x):   # 变元组
    print(x)


func4(10)


def func5(**x):  # 变字典
    print(x)


func5(a=20, b=30, v=40)


def func6(*x, **y):   # 元组,字典
    print(x, y)


func6(10, 20, a=20, b=30, v=40)

# (10,)
# {'a': 20, 'b': 30, 'v': 40}
# (10, 20) {'a': 20, 'b': 30, 'v': 40}

全局变量和局部变量:

  • 局部变量:
    • 局部变量,就是在函数内部定义的变量。
    • 局部变量的约束:
      作用范围:函数内部,只能在函数中使用,不能在函数外部使用。
      生命周期:函数被执行时,局部变量被创建,函数执行结束后,局部变量被销毁。
      举个栗子:
def test1():
    a = 120
    print('我是局部变量:', a)
    a = 240
    print('我是修改后的局部变量:', a)


def test2():
    a = 360
    print('我是test2函数的局部变量:', a)


test1()
test2()

#我是局部变量: 120
#我是修改后的局部变量: 240
#我是test2函数的局部变量: 360
  • 全局变量:
    • 定义在函数外边 的变量是全局变量
    • 当函数外部的全局变量和函数内部的局部变量名称一样时,函数会根据就近原则,局部变量的值会覆盖原来的全局变量

举个栗子:

# 全局变量
b = 100


def test3():
    print(b)


test3()
# 100

# 全局变量被局部变量覆盖
global_name = 100  # 全局变量


def test5():
    global_name = 200  # 局部变量
    print(global_name)


test5()  # 200
print(global_name)  #200
# 200
  • 全局变量的修改:
    如果函数中出现了global,函数中即使出现了和全局变量维相同的变量名,也不会起到局部变量的结果。
    也可以理解为:在函数内部对全局变量做出了修改;
x = 500
def test6():
    global x    # 此时将x修改为全局变量
    x = 600
    print(x)

test6()
print(x)
# 600
# 600

未完待续……

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值