木头127 发表于 2022-3-27 20:47

Python学习日记Day3:Python函数

本帖最后由 木头127 于 2022-3-27 21:06 编辑

Python函数和类

一、Python函数

任何程序里面包含的不是函数就是类,Python也是如此。

1. 函数的定义

函数的作用有两个:①模块化编程   ②代码重用

函数是独立的,完成特定功能的代码段,在Python程序中,所有的一切都是函数,大多数是有名函数,也存在匿名函数。

    #函数的基本语法:
    def 函数名称([参数1,参数2,.....]):#这里的参数是形式参数
      函数体
      ...
      
    #尽量使用return来进行函数值的返回
   

1. 函数的参数(形参和实参)
   在函数定义和调用的时候,我们能根据自己的需求来实现参数的传递,函数的参数有两种形式:形参和实参。
   形参:在函数定义的时候,括号中所编写的参数成为形式参数。
   实参:在函数调用的时候,传递的参数成为实际参数
       def hello(name):#name是定义时所编的形式参数,这里name是局部变量
         return name
       mingzi='Mrzhang'
       greet(mingzi)#函数调用时,括号内传递的是实际参数
   函数的参数类型:位置参数、关键词参数、缺省参数,不定长参数、
   在函数定义时,我们可以定义多个参数,但是在函数调用时,我们也应该传递多个参数,正常情况下,要一一对应。
   位置参数:
       def student(name,age,mobile):
         print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
       #传递实参要一一对应
       student('zhangsan',20,'1310389090')
         #顺序不能颠倒,否则意思就会改变,所以该参数也叫位置参数
   关键词参数:
       def student(name,age,mobile):
         print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
       #传递实参要一一对应
       student(name='zhangsan',age=20,mobile='1310389090')
       #通过键=值的形式指定内容,让函数更加清晰,即使位置改变,意思也不会改变。
   缺省参数:也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可以不穿该默认值。
   注意:定义缺省参数时,一定要把它卸载参数列表的最后面。
       def student(name,age,gender='male'):
         print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
       #传递实参要一一对应
       student('zhangsan',20)
       student('lisi',21,female)
       student('wanger',18)         
   不定长参数:也叫可变参数
       #用于不确定调用的时候会传递多少个参数(无参数也可)的场景
       #分为包裹位置和包裹关键字参数
       ##包裹位置参数
       def student(*args):#args 元组类型数据对传递参数有顺序要求
            print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
       student('zhangsan',20,'1310389090')
               
       #包裹关键字参数
       def student(**kwargs):
      #kw=keyword+args
      #kwargs字典类型数据,对传递参数没有顺序要求,格式要求key=value
            print(f'学生的名字交{kwargs["name"],今年{kwargs["age"]岁了,联系方式是{kwargs["mobile"]}')      
   Python组包:把多个数据组成元组或字典的过程。无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程。
2. Python拆包(元组和字典)
   拆包:对于函数中的多个返回数据,去掉元组,列表或者字典 ,直接获取里面数据的过程。
       #元组的拆包过程
       def func():
         return 100,200 #返回多个值,使用tuple元组类型数据
       #定义两个变量接受元组中的每个数组进行拆包
       num1,num2=func()
       print(num1)
       print(num2)
       #结果为 100 ,200
      
       #字典的拆包过程
       dict1 = {'name':'小明', 'age':18}
       a, b = dict1
       print(a)
       print(b)
       # 获取字典中的数据
       print(dict1)
       print(dict1)
   
3. 函数的变量(局部变量和全局变量)
   在Python中,定义在函数外部的变量称之为全局变量;定义在函数内部的变量称之为局部变量。
       #全局变量作用范围:在整个程序范围内都可以直接使用
       #局部变量作用范围:在函数调用的过程中,开始定义,函数运行的过程中生效,执行完毕之后,进行销毁。(可以了解Python的垃圾回收机制)
       num=1
       def func():
         i=1
       #num 为全局变量,i为局部变量
   思考:能不能在局部作用域中对全局变量进行更改?
   答:global关键字
       num=10
       def funca():
         global num
         #若没有这一句,输出的num会等于 10,并没有更改全局变量
         num =20
       funca()
       print(num)
       #global关键字可以用于多函数之间的数据共享
   
4. 关于return返回值问题:
   (1)如果一个函数有两个return,程序如何执行?
       def return_text():
         return 1
               return 2
       reslut=return_text()
       print(result)
       #结果是返回 1 ,因为return可以退出当前函数,第一个return下面的代码就不执行了
   (2)如果一个一个函数有多个返回值,该如何书写?
       def return_text():
         return 1,2
       result=return_text()
       print(result)
       #在python中,一个函数只能返回一个结果,如果想要返回多个结果,可以使用元组的形式,在学习元组时也有讲到过,元组可以返回多个值。
       #可以查看结果类型,type(result)
5. 函数的调用:
   在Python中函数和变量一样,都是先定义后进行调用
       #基本语法:
       def hello(name):
         return name+',hello!'
       result=hello('Mrzhang') #直接使用函数名进行调用,赋值给str
       print(result)
       #打印结果
6. 函数的嵌套
   函数的嵌套调用:一个函数里面又调用了另外一个函数。
   Python代码执行遵循一个顺序原则: 从上往下,从左往右,一行一行地执行。
       def funcA():
         print('this is function A.')
       def funcB():
         print('*' * 40) # 可以打印40个*
         print('this is function B')
         funcA()
         print('*' * 40)
       funcB()
       #代码运行顺序(按照行数):1 3 8 4 5 6 2 7
      
   代码执行流程:
           执行第1行时仅仅定义了funcA函数,内部代码没有执行,跳过第2行继续执行,
           执行到第3行,定义funcB函数,并没有真正的调用和执行。
           代码跳到第8行,funcB函数,调用funcB并且执行内部代码,程序返回第4行
           执行第4行,打印字符,并继续执行,直到第6行调用函数funcA(),跳到第2行。
           第二行执行完毕后,返回funcB,继续第7行,打印字符串。
7. Python的内置函数:
   内置函数无须从模块中导入,也不用定义 就可以直接在任意位置直接调用。
       #一些常用的内置函数
       abs(-1):求绝对值,返回1
       max():求序列中最大值,可以是列表或元组
       min(2,3,4):求序列中最小值,可以是列表或元组
       divmod(6,3):取模,返回一个元组,包含商和余数
       int(3.9):转换成整数,去尾转换,结果为3
       float(3):转换成浮点数
       str(123):转换成字符串
       list((1,2)):元组转换为列表
       tuple():列表转换成元组
       len():求序列长度,可以是列表或元组
   

9.Python文件操作方法(读写)

open函数负责新建、打开文件,并返回操作对象。

read方法将文件内容读取到内存。

write方法将指定内容写入文件

close方法关闭文件,open文件后必须有close文件。

    #open函数的语法
    open(filename[,mode,encoding=])
    '''
    filename 要打开或新建的文件地址或者名称,字符串形式,例如 text.txt 或者E:/python/text.txt
    mode 文件访问模式,只读,只写,读写等等,可选参数,有参数列表,默认模式为只读
    encoding= 编码解码的标准,如果文件中包含中文信息,需要制定encoding=utf-8
   
    '''
    实例:
    f=open('test.txt','a+',encoding='utf-8')
    data=f.write('Hello World')
    read=f.read()
    print(read)

木头127 发表于 2022-3-27 21:06

预览的时候好好的,提交完内容就变得错乱了{:1_904:}

木头127 发表于 2022-3-27 22:16

马杏争1994 发表于 2022-3-27 21:38
可以去看 python cookbook一天搞定基本语法

markdown的语法出错了:sleepy:

xiadongming 发表于 2022-3-27 22:41

页: [1]
查看完整版本: Python学习日记Day3:Python函数