python之函数

print() 打印输出
input() 输⼊
len() 求容器⻓度的
...
函数可以实现⼀个具体的功能

函数的定义和调⽤

#,函数,能够实现一个具体的功能,是名行代码的整合#西数的定义:使用关键字def ,
#def函数名():
# #函数名要遵循标识符的规则,见名知意
#函数代码(函数体)
#函数定义,函数中的代码不会执行,在函数调用的时候,才会执行
# #函数的好处:重复的代码不需要多次书写,减少代码冗余
print( '函数定义前')


#函数的定义,函数的定义不会执行函数中算的代码
def func( ):
    print('好好学习,天天向上')
    print( ' good good study,day day up')
    print('上课认真听讲,不要走神')


print('函数定义后')
#函数调用的时候才会执行函数中的代码 函数名()
print('函数调用前')
func()      #代码会跳转到函数定义的地方去执行
print('函数调用后')

函数的⽂档说明

#函数的文档说明本质就是注释,告诉别人,这个函数怎么使用的,是干什么事的
#只不过这个注释,有特定的位置书写要求,要写在函数名字的下方
def func( ):
'''
打印输出一个heLLo worLd,
'''
#hanser

    print( ' hello wold ' )

func()
#查看函数的文档注释可以使用heLp(函数名)
# heLp( print)

help(func)

 参数的函数

#定义一个函数,实现两个数的和
def add(a, b):      # a和 b称为是形式参数,简称形参
#a = 10
#b = 20
    c = a + b
    print(f"求和的结果是{c}")


#函数调用,如果函数在定义的时候有形参,那么在函数调用的时候,必须传递参数值#这个参数称为实际参数,简称实参
#在函数调用的时候,会将实参的值传递给形参
add(1, 2)           #函数调用时候的参数,称为实参
add(100,200)        #会将实参的值给到形参
#形参的个数需要和实参的个数对应,相同,不能多,也不能少

 函数传参

位置传参与关键字传参

def func(a, b,c):
    print(f"a: {a}")
    print(f"b: {b}")
    print(f"c: {c}")
#位置传参,按照形参的位置顺序将实参的值传递给形参
func(1,2,3)
#func(3,1,2)
#关键字传参,指定实参给到哪个形参,注意点:关键字必须是函数的形参名
func(a=10,b=20,c=30)
#func(c=10,a=20,b=30)
#混合使用,先写位置传参再写关键字传参
# func(10,b=20,c=30)
# func( a=10,20,30)
#代码会报错
#func( 10,a=30,b=20)
#代码会报错

函数形参

(1)缺省参数

# print( )
#缺省参数,形参.在函数定义的时候,给形参一个默认值,这个形参就是缺省参数
#注意点:缺省参数要写在普通参数的后边
#特点:在函数调用的时候,如果给缺省参数传递实参值,使用的是传递的实参值,如果没有传递,使用默认值
def func(a, b,c=10) :    #形参c称为缺省形参
    prinf(f"a: {a}")
    prinf(f"b: {b}")
    prinf(f"c: {c}")
func(1,2)        #没有给c传递实参,使用默认值10
func(1, 2,3)     # 给c传递实参值,使用传递的数据3

(2)不定⻓参数

def func(args, kwargs):    #两个普通的形参
    print(args)
    print(kwargs)

func(1,2)
func(args=2,kwargs=1)

print( '*·*30)
print( '*·*30)

#在形参前边加上一个*,该形参变为不定长元组形参,可以接收所有的位置实参类型是元组
#在形参前边加上两个**,该形参变为不定长字典形参,可以接收所有的关键字实参,类型是字典
def func( *args,**kwargs) :
    print(args)
    print(kwargs)


func(1,2,3,3,4,5)
func(a=1, b=2,c=3,d=4)
func(1,2,3,a=4, b=5,d=6)

(3)函数形参的完整格式

#普迪形参    缺省形参    不定长元组形参    不定长字典形参
def func(a,b=1):    #先普通再缺省
    pass


def func1(a, b=1,*args):        # 语法上不会报错,但是缺省参数不能使用默认值
    print( 'a', a)
    print( 'b', b)
    print( args)


def func2(a,*args, b=1):        #普通形参不定长元组形参缺省形参
    print( 'a', a)
    print( 'b', b)
    print(args)


def func3(a,*args, b=1,**kwargs):    #普通形参﹑不定长元组形参﹒缺省形参 不定长字典形参
    pass

#func1(1,2,3,4)
#func2(1,2,3,4)
func2(1,2,3,4, b=10)

拆包 

容器中元素数据的个数需要和变量的个数保持⼀致. 

#组包,将多个数据值,组成元组,给到一个变量.
a = 1,2,3
print(a)#(1,2,3)


def func():
    return 1,2 #组包


#拆包:将容器的数据分别给到多个变量,需要注意:数据的个数和变量的个数要保持一致
b, c, d = a#拆包
    # print(b, c, d)
e, f = func( )
print(e,f)

my_list = [10,20]
a, b = my_list
print(a,b)
my_dict = i ' name ' : 'isaac' , 'age' : 18}
a, b = my_dict    # key 值
print(a, b)


引⽤

#可以使用id()查看变量的引用,可以将id 值认为是内存地址的别名
#python中数据值的传递的是引用
#赋值运算符可以改变变量的引用


#将数据10存储到变量a 中,本质是将数据10 所在内存的引用地址保存到变量a中

a = 10
#将变量a中保存的引用地址给给到b
b = a
print(a, b)    #使用print函数打印变量a和b引用中存储的值
print(id(a), id(b))

a = 20

print(a, b)
print(id(a), id(b))

my_dict = i ' name ' : 'isaac' , 'age' : 18}a, b = my_dict# key 值
print(a, b)

局部变量

局部变量的作⽤域(作⽤范围): 当前函数的内部

局部变量的⽣存周期:在函数调⽤的时候被创建,函数调⽤结 束之后,被销毁(删除)

局部变量只能在当前函数的内部使⽤,不能在函数的外部使⽤

#局部变量,就是在函数内部定义的变量,就是局部变量
#局部变量,只能在函数内部使用,不能在函数外部和其他函数中使用

def func( ):
#定义局部变量num
    num = 100
    print(num)


def func1( ):
    num = 200       #这个num和func中的num是没有关系的
    print( num)


#函数调用
func()
func1()
#探究:局部变量能否在函数外部使用
#print(num)#代码报错,局部变量不能在函数外部访问

全局变量

全局变量: 就是在函数外部定义的变量。

在函数内部可以访问全局变量的值,如果想要修改全局变量的 值,需要使⽤ global 关键字声明

#全局变量:就是在丽数外部定义的变量。

#定义全局变量
g_num = '100'


#1.可以在函数内部访问全局变量    可以直接访阿全局变量的值
def func1( ):
    print(g_num)
#2.不能在函数内部修改全局变量的值  不能直接修改全局变量的值
def func2():
    # g_num = 200#这里不是修改全局变量的值,是定义一个局部变量,和全局变量的名字一样而已
    #想要在函数内部修改全局变量的值,需要使用 global关键字声明这个变量为全局变量
    global g_num
    g_num = 300


func1()
func2()
func1()

返回值

在函数中定义的局部变量,或者通过计算得出的局部变量, 想要在函数外部访问和使⽤,此时就可以使⽤ return 关键 字,将这个返回值返回.

#函数想要返回一个数据值,给调用的地方,需要使用关键字return
#return关键字的作用: 将return后边的数据值进行返回o,程序代码遇到eturn,会终止(结束)执行
#return关键字必须写在函数中
def add(a, b):
    c = a + b
    #想要将求和的结果c,返回,即函数外部使用求和的结果,不在函数内部打印结果
    return c
    print(f'求和的结果是{c}')        #函数遇到return就结束了,不会执行return之后的代码



result = add(1ee,280)
print(f'函数外部获得了求和的结果{result} ')

return 返回多个数据值

程序代码遇到⼀个 return 之后,后续的代码不再执行

def func(a, b):
    c = a + b
    d = a - b
    #需求:想要将c和 d都进行返回
    #思考:容器可以保存多个数据值,那就可以将c和d 放到容器中进行返回
    # return [c, d]
    # return (c, d)
    # return { 'c': c, 'd ' : d }
    #return {e: c,1: d }

return c, d #默犬认是组成元组进行返回的


result = func( 10,20)
print(f"a+b的结果是{result[0]},a-b的结果是{result[1]}")
1. return 关键字后边可以不写数据值, 默认返回 None

def func():

         xxx

return # 返回 None,终⽌函数的运⾏的

2. 函数可以不写 return,返回值默认是 None

def func():

        xxx

        pass

函数的嵌套调⽤

def func1():
    print( 'func1 start ... ')
    print( '函数的其他代码')
    print( ' func1 end ...')
    

#在一个函数中可以调用另外一个函数


def func2():
    print( ' func2 start ....')
    func1()    #函数调用
    print( 'func2 end. . . . ' )

#调用func1( )
# func1()

#调用func2()
func2()

案例

学⽣管理系统

增删改查操作
存储学⽣信息:
 姓名
 年龄
 班级
 性别
 ...
 {'name': 'isaac', 'age': 18, ...}
存储所有的学⽣信息:
 列表: [{}, {}, {}, ....]
功能菜单,业务框架.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值