第五课 Python之函数5.1

函数:

一、什么是函数

定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

二、pycharm中的表结构

项目 ,包(init)或目录,py文件,py文件包含多个函数或类等

三、函数的有哪些优点?

1、降低代码冗余

2、增加代码的复用性,提高开发效率

3、提高程序的拓展性

4、封装:就是把代码片段放在函数当中

================================

二、函数的使用

1、自定义函数
2、内置函数

(1)自定义函数

自己封装的函数

(2)如何定义一个函数

def
格式:

def 函数名(参数): #定义函数
函数体
函数名( ) #调用函数

案例:

3、调用函数的方法:

(1)第一种:直接调用 函数名()

(2)第二种:mian方法

if __ name__ == ' __ main__': 主函数调用
主函数的解释:
解释:

if __ name__ == '__ main__': 是函数的入口,也称为主函数
__ name __ 是当前模块名,当模块被直接运行时模块名为 __ main __ ,这句话的
意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,
代码块不被运行。

def hs():
    print("上海多测师")
    print("杭州多测师")
def hs1():
    print("深圳多测师")
    print("广州多测师")
if __name__ == '__main__':
    hs1()    结果:深圳多测师
                  广州多测师

(3)第三种:调用方法:跨模块调用 a 模块 ,b模块

a文件:

b文件:

调用上一个文件中的函数:

先导入模块中函数:

from 项目名.包名.模块名 import (导入) * (*所有的函数)

=================================================
函数中的参数:

1、函数体中无函数
def  hz():
  print("dcs")
  print("hz")         结果:dcs
hz()                       hz
2、函数中有单个参数
def  hz(a):
    print(a)
    print(a+2)        结果:12
hz(12)                     14
3、函数中有多个参数
def  hz(a,b,c):
    print(a)
    print(a+b)        结果:1
    print(a+b+c)           3
hz(1,2,3)                  6
4、函数定义时带上默认参数
c=18 表示默认参数
def  hz(a,b,c=18):
    print(a)
    print(a,b)            结果:1
    print(a,b,c)               1 2
hz(1,2)                        1 2 18

5、可变长元组
可变长参数中可变长元组“ * ” ;一个 * 号

案例1:单独可变长元组使用
def  hz(*a):
    print(a)
hz(1,2,3,4,5)            #结果:(1, 2, 3, 4, 5)

案例2:可变长元组使用和普通参数在一起,只能可变长元组在后,否则报错
def  hz(b,*a):
    print(a)
    print(b)              结果:(2, 3, 4, 5, 8)
hz(1,2,3,4,5,8)                 1

6、可变长字典
可变长字段用两个 ** 表示
案例1:单独传字典:

(1)
def  zd(**d):
    print(d)
zd(name="zt",age="18")      #结果:{'name': 'zt', 'age': '18'}

(2)
def  zd(**d):
    print(d)
d={"a":1,"b":2}
zd(**d)                     #结果:{'a': 1, 'b': 2}

案例2:当可变字典和可变元组在一起,可变元组在前,可变字典在后

def  zd(*y,**d,):
    print(y)
    print(d)
d={"a":1,"b":2}              结果:(111, 2)
zd(111,2,**d)                     {'a': 1, 'b': 2}

案例3:普通参数,可变长元组,可变长字典

def  zd(p,*y,**d,):
    print(p)
    print(y)
    print(d)                结果:7
d={"a":1,"b":2}                  (111, 2)
zd("a",111,2,**d)                {'a': 1, 'b': 2}

======================================
变量
函数汇总的变量和作用域
(1)全局变量:在函数内外都可以引用
(2)局部变量:在函数体中定义的变量被称为局部变量
(3)通过局部变量改成全局变量
1、认识局部变量和全局变量

a=10         #全局变量
def s():
    a=100    #局部变量
    print(a)
def c():
    print(a)
if __name__ == '__main__':
    s()                    #结果:100
    c()                          10
备注:局部变量和全局变量在一起,局部变量优先级高于全局变量

2、将局部变量改为全局变量 global

a=10  #全局变量
def s():
    global a    #通过global 将局部变量改为全局变量
    a=100 #局部变量
    print(a)
def c():
    print(a)
if __name__ == '__main__':
    s()                          结果:100
    c()                               100

return 函数
返回值

(1)
Python中,用 def 语句创建函数时,可以用 return 语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return 语句在同一函数中可以出现多次,但只要有一个得到执行,就会直接结束函数的执行。
函数中,使用 return 语句的语法格式如下:return [返回值]
其中,返回值参数可以指定,也可以省略不写(将返回空值 None)
(2)返回值的作用:
1、在程序开发中,有时候会希望一个函数执行程序结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理。
2、返回值是函数完成工作后,最后给到调用者的一个结果。
3、在函数中使用return关键字可以返回结果。
4、调用函数的一方可以使用变量来接收函数的返回结果。
注意点:return后面的语句不执行

def s():
    # global a
    a=100       #局部变量
    return a
def c():
    k=s()
    k*=2
    print(k)
if __name__ == '__main__':
    s()
    c()              结果:200

作业:
需求:登录银行系统并显示余额,有两个功能第一个是登录,第二个是登录后显示余额,先登录然后根据登录是否成功然后是否显示余额。
分析思路:如果想查询到余额,前提必须登录,所以现在我们用两个函数来处理,第一个函数实现登录,第二个函数实现余额查询,调用第一个函数得到的结果给第二个函数,然后第二个函数根据结果进行代码处理。

方法一:
def login (a,b):
    if a=="jz" and b=="123":
        print("登录成功")
        return  0
    else:
        print("失败")
        return 1
def selec (a):
    if a==1:
        print("尚未登录")
    elif a==0:
        print("您的余额为0")
if __name__ == '__main__':
     b=login("jz","123")        #结果:登录成功
     selec(b)                         您的余额为0
方法二:
def  dl():
    name=input("请输入用户名:")
    if name=="zt":
        print("登录成功")
        return  "登录成功"
    else:
        print("登录失败")
        return "登录失败"
def select():
    c=dl()
    if c=="登录成功":
        print("余额:一个亿")
    else:
        print("你就是一个乞丐")

if __name__ == '__main__':
    select()
方法三:  
return   1或0    ;return  Ture  或falsh   ,
return  "登录成功"
return  "登录成功"
def  dl():
    name=input("请输入用户名:")
    if name=="zt":
        print("登录成功")
        return  1
    else:
        print("登录失败")
        return 0
def select():
    c=dl()
    if c==1:
        print("余额:一个亿")
    else:
        print("你就是一个乞丐")

if __name__ == '__main__':
    select()

===========================

python内置函数也叫内建函数;python自带的函数

1、format函数
定义:format( )函数是一种格式化字符串的函数 ,该函数增强了字符串格式化的功能。
基本语法:是通过 { } 来代替以前的 %
(1)不设置指定位置,按默认顺序

1\
hz="{}".format("dcs","bank")
print(hz)            #结果:dcs
2\
hz="{},{}".format("dcs","bank")
print(hz)            #结果:dcs,bank
3\元组范围超出
hz="{}it{}{}".format("dcs","bank")
print(hz)

(2)设置指定索引位置输出

hz="{0} it {0}".format("dcs","bank")  备注:索引从0开始
print(hz)            #结果:dcs it dcs

(3)设置参数输出

a="姓名:{name},年龄:{age}".format(name="duoceshi",age=18)
print(a)             #结果:姓名:duoceshi,年龄:18

(4)对列表进行格式化

a=[1,2,3] #0
b=[4,5,6] #1
print("中奖号码:{0[2]},兑奖号码:{1[1]}".format(a,b)) #a,b 表示两个列表排序
                     #结果:中奖号码:3,兑奖号码:5

a=[1,2,3] #0
b=[4,5,6] #1
print("中奖号码:{1[2]},兑奖号码:{0[1]}".format(a,b)) #a,b 表示两个列表排序
                     #结果:中奖号码:6,兑奖号码:2
备注:
一个表默认0
两个表就是按0,1索引位表示
取值也是按括号内索引位来取值
  大括号里面的0代表的是列表、中括号里面的0和1是列表元素对应的索引位

(5)对字典进行格式化 "* *"表示可变长字典

a={"name":"多测师","url":"www.duoceshi.com","zj":"100w"}
b="网站名:{name}, 网站:{url},资金:{zj},品牌:{name}".format(**a)
print(b)
#结果:网站名:多测师, 网站:www.duoceshi.com,资金:100w,品牌:多测师

============================================
zip函数
zip( ) 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

(1)zip 压缩
字符类型:<class 'zip'>

案例1:将两个列表转成字典
a=["a","b","c"]
b=[4,5,6,7,8]
c=zip(a,b)        #通过zip方式方法转换成元组放入列表当中
print(type(c))    #<class 'zip'>
d=dict(c)         #转换成字典
print(d)
案例2 元组:
a=["a","b","c"]
b=[4,5,6,7,8]
c=zip(a,b)
print(type(c))    #<class 'zip'>
c=tuple(c)
print(c)          #结果:(('a', 4), ('b', 5), ('c', 6))

(2)zip解压
zip( * )

a=["a","b","c","a"]
b=[4,5,6,7,8]
x,y=zip(*zip(a,b))
print(x)          #结果:('a', 'b', 'c', 'a')
print(y)          #结果:(4, 5, 6, 7)

============================================
open函数
open() 函数用于打开一个文件,创建一个 file 对象
语法:open(file, mode),模式有r(只读),w(写入覆盖),a(写入追加)
(1)按住ctrl键,鼠标点击open关键字,查看用法
(2)读取python中复制的路径

!!!!!!!!!!!!!!

!!!!!!!!!!!!!!

(3)读取本地文件内容:

地址:E:\az\ls\tt.txt

新建一个txt文档:

案例:

url2=r"D:\ls\cms.txt"
wj=open(url2,"r",encoding="utf-8")
print(wj.read())

(4)'r'读取的三种方式
1、read #读取文件中所有内容返回字符串

url2=r"D:\ls\cms.txt"
wj=open(url2,"r",encoding="utf-8")
print(wj.read())

2、readline ##读取文件中第一行内容

url2=r"D:\ls\cms.txt"
wj=open(url2,"r",encoding="utf-8")
print(wj.readline())

3、readlines ##读取文件中所有内容返回列表

url2=r"D:\ls\cms.txt"
wj=open(url2,"r",encoding="utf-8")
print(wj.readlines())

================================================
写入文件

url2=r"D:\ls\cms.txt"
wj=open(url2,"w")          #打开并写入
wj.write("2022新年好11")    #写入内容
wj.close()                 #关闭文件,释放资源
r=open(url2,"r")
print(r.read())

================================================
a追加:
案例:追加的模式:a(写入追加)

url2=r"D:\ls\cms.txt"
wj=open(url2,"a")      #打开并写入
wj.write("2022大家暴富")   #写入内容
wj.close()  #关闭文件,释放资源
r=open(url2,"r")
print(r.read())

==========================
open( )函数扩展用法

with open("C:\\aa.txt", 'r')as f:
a = f.read()
b = f.readline()
c = f.readlines()
d = f.write()
e = f.writelines()
用with语句的好处,就是到达语句末尾时,会自动关闭文件,即便出现异常
案例1:read()
url2=r"D:\ls\cms.txt"
with  open (url2,"r") as  f:
    a=f.read()
    print(a)
案例2:readlines()
url2=r"D:\ls\cms.txt"
with  open (url2,"r") as  f:
    a=f.readlines()
    print(a)
案例3:readline()
url2=r"D:\ls\cms.txt"
with  open (url2,"r") as  f:
    a=f.readline()
    print(a)

===================================
long函数在python3中已删除
len函数:返回一个内容的长度
语法:len(内容)
内容:字符串,列表,字典,元组等

案例1:计算字符
str="abcde"
print(len(str))   #结果:5
案例2:计算列表
list=[1,2,3,4]
print(len(list))  #结果:4
案例3:计算字典
d={"name":"zt","age":"18"}
print(len(d))     #结果:2
案例4:计算元组
t=(1,2,3,4)
print(len(t))     #结果:4

===================================
abs函数 绝对值
案例:

a=-1
print(abs(a))  #结果:1

===================================
sum 函数 求和

print(sum(range(1,101)))

===================================
id 函数返回对象唯一标示,标示是一个整数

a=[1,3]
b=[2,5,6]
print(id(a))  #1636447642248
print(id(b))  #1636447642312
d={"name":"zt","age":"18"}
a=d
c=d.copy()
print(id(a))  #1947478161736 
print(id(d))  #1947478161736
print(id(c))  #1510760806800

===================================
min 最小
返回给定参数最小值或传入可迭代对象元素中的最小值

案例1:数字排列
a=[1,2,3,4,5]
print(min(a))        #结果:1
案例2:
str1="abik"
print(min(str1))     #结果:a
案例3:数字和字符
str="a0b12kq3p"
print(min(str))      #结果:0

===================================
max 最大
返回给定参数的最大值,参数可以为序列。

a=[1,2,3,4,5]
print(max(a)) #5
str="a0b12kq3p"
print(max(str))  #q
str1="abik"
print(max(str1))  #k

===================================

file 函数用于创建一个file对象,它有一个别名叫open()

===================================
help函数的作用:
help函数查看函数或模块用途的详细说明
案例:

help("sys")
help("str")
print(help(list))

===================================
dir()函数是查看函数或模块内的操作方法有什么,输出的是方法列表
案例:dir查询一个类或者对象素有属性

print(dir(list))
结果:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

===================================
float 浮点值,必须在python中将其转换为浮点值

print(float(12))        #12.0
print(float(126))       #126.0
print(float("1"))       #1.0   将字符串转换成浮点数
a=[1,2,3,4,5]
print(max(a))           #5
str="a0b12kq3p"
print(max(str))         #q
str1="abik"
print(max(str1))        #k
posted @ 2024-11-11 17:39  影清风  阅读(22)  评论(0编辑  收藏  举报