python实战:函数

定义

def 函数名 ():
函数内部封装的代码
# 函数名的命名规则与变量名命名规则一致

调用

函数名 ()
# 这里只是定义了一个函数,名叫hello # 定义函数的时候,函数内部的代码并不会执行 
def hello(): 
    print("hello world") 
    print("hello world") 
    print("hello world") 
# 调用函数 
# 只有调用函数的时候,函数内部的代码才回真正执行 hello()

输出20个*

def my_func1(): 
    print("*" * 20) 

my_func1()

函数的参数

函数的主要功能是封装代码
一个已经定义完成函数 , 不应该在去修改函数内部的定义代码
可以通过函数的参数 , 实现函数代码的灵活功能
语法
def 函数名 ( 参数 1 , 参数 2 , .....):
函数内部封装代码
函数名 ( 参数 1 对应的值 , 参数 2 对应的值 , .......)
# 调用的时候和定义函数的时候 , 参数的数量要一一对应

形参与实参

形参
定义函数的时候 , 括号里面的参数
形参必须是变量
实参
调用函数的时候 , 括号里面的参数
实参可以是常量
实参可以是变量
实参可以是表达式
定义函数的时候 , 形参有值吗 ?
定义函数的时候 , 形参没有值 , 只是一个变量名
只要调用函数的时候 , 通过实参把值实时赋值给形参

函数的返回值

有时候 , 函数并不是要显示什么内容 , 而是要把一个值返回给调用者 , 比如 python 自带的 len 函数就是
这样的
函数内容通过 return 返回给调用者一个值
return 后面可以是常量 , 也可以是变量 , 还可以是表达式
# # 我们没有使用过函数 带返回值 
# print("hello python") 
# # 对于没有返回值的函数,调用方法,直接函数名(参数) 
# # len是有返回值的函数 
# a = len("hello python") 
# 会把一个值返回给调用者 # print(a) 
# print(len("hello python")) 
def my_sum(a, b):
    return a + b # 把a + b 的结果,返回给调用者 
num1 = my_sum(2, 3) # 这里就是调用my_sum函数,所以num1得到了函数的返回值 
print(num1) 
print(my_sum(5, 6))

变量作用域

局部变量
函数内部定义的变量就是局部变量
局部变量只能在函数内部使用
不同的函数局部变量名字可以相同
全局变量
函数外部定义的变量就是全局变量
全局变量在所有函数内部也可以使用
局部变量能解决的问题 , 不要通过全局变量解决 , 尽量少定义全局变量

局部变量作用范围

局部变量从调用函数的时候开始在内存出现 , 函数调用完毕 , 局部变量从内存消失
如果一个函数内部定义了局部变量 , 但这个函数没有被调用 , 那么局部变量也不在内存中存在
def my_func1(): 
    a = 1 # a是一个局部变量,只属于my_func1函数 
    print(a) 
def my_func2(): 
    a = 2 # a是一个局部变量,只属于my_func2函数 
    print(a) 
my_func1() # 调用函数的时候,局部变量a出现了 
# my_func1函数调用完毕,a消失了
 # 定义函数的时候局部变量并不存在,只有调用函数的时候局部变量出现了 
print("end")

全局变量的作用范围

全局变量一般定义在函数定义的上方
全局变量从定义变量开始在内存中出现 , 一直到程序运行完成 , 和程序一起从内存中消失
num1 = 2 
def my_func1():
    print(num1) 
def my_func2(): 
    print(num1) 
my_func1() 
num1 = 10 
my_func2() 
print("end")

局部变量与全局变量重名

如果在函数内部定义一个变量 , 名字和全局变量重名 , 那么在这个函数内部只能使用局部变量

global关键字

当需要在函数内部修改全局变量的值 , 修改前需要用 global 修饰全局变量的名字
def 函数(): 
    global 全局变量名 
    全局变量名 = 值 123

形参和实参的值传递

如果形参的类型为数字或者字符串 , 在函数内部修改了形参的值 , 实参的值不会改变

 

 形参的缺省值

形参可以有缺省值 , 当调用函数的时候 , 没有提供相应的实参 , 那么形参会采用缺省值
def 函数名 ( 形参 = 缺省值 )

 

lambda匿名函数

lambda 是给特别小型的函数准备一个简化语法
不用写 def, 也不用写 return
一行代码就能定义一个函数
语法
def 函数名 ( 形参 = 缺省值 )
def my_test1(a, b = 10): # 形参b有缺省值
print(a, b)
def my_test2(a = 1, b = 2):
print(a, b)
my_test1(1, 2)
my_test1(100)
my_test2()
my_test2(100, 12)
# def my_test3(a = 10, b): 不能把有缺省值的形参写到没缺省值形参的前面
# print(a, b)

lambda匿名函数

lambda 是给特别小型的函数准备一个简化语法
不用写 def, 也不用写 return
一行代码就能定义一个函数
语法
lambda 参数 1 , 参数 2 , ..... : 函数执行代码
# def my_sum(a, b): 
# return a + b 
my_sum = lambda a, b : a + b 
num1 = my_sum(3, 4) 
print(num1) 
num1 = my_sum(23, 4) 
print(num1)
# def my_max(a, b):
#     if a > b: 
#     return a 
#     else: 
#     return b 
# num1 = my_max(4, 5) 
num1 = (lambda a, b : a if a > b else b)(4, 5) 
print(num1)

lambda注意事项

匿名函数内部只能有一条语句 , 而且这条语句要有个具体的值返回
匿名函数不能使用 print
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值