实参(实际参数): 实际函数执行的时候的参数 当调用函数的时候给定的参数值 100 1形参(形式参数): 作用是用来接受实参 定义在函数小括号中 a b缺省参数: 当我们不给定的参数时默认的参数 QQ邮箱 默认的邮箱名称 qq号@qq"""# 定义一个加法函数 数字1 数字2 结果
def add(a,b):result = a + b;print(result)add(1,100) #结果 101# 定义参数的缺省值
def personInfo(name,age=18):print("%s的年龄是%d岁"%(name,age))# 给定年龄 按照给定的走
personInfo("柴志杰",6)# 不给定年龄 使用的缺省值 也就是默认值18
personInfo("柴志杰")
可变参数: 我们不确定参数的个数一:元组类型 二:字典类型
"""
# 定义一个不管多少个数字都可以进行相加的函数 param表示入参的一个元组
# 第一种:元组类型
def addCount(*param):print(type(param))sum = 0for num in param:sum+=numprint("计算的和为%d"%sum)addCount(7,8)
print("==========")
addCount(1,2,3,4,5,6)# 第二种:字典类型
def distPrint(**args):print(args)distPrint(name="admin",age=18,address="北京")
求: 定义一个函数,定义一个字符串,计算子串出现的次数,并打印出来分析:1.函数的参数:两个字符串2.计算子字符串在父字符串中出现的次数 并打印
""" strPar = "abcdefabcdefaaa"
strSon = "aaa"def countStr(strPar,strSon):# 计算次数count = unt(strSon)print(count)countStr(strPar,strSon)
需求:定义一个函数,要求能够获取字符串中后10个字符,并打印出来分析:1.函数的入参 一个字符串2.要截取字符串的后10位3.打印截取内容
"""def subStrF(strN):# 判断 如果字符串大于10位if len(strN)>10:print(strN[len(strN)-10:])# 不到10位 直接打印else:print(strN)subStrF("1234567890abc")
subStrF("abc")
# 中断循环有两个关键字:break continue
"""
while True :strH = input("请输入信息")if strH == "quit": # quit exit单词都是退出的意思break
""""""
# 循环嵌套下的中断
while True:for i in range(0,5):print("内循环")break # break 只中断当前所在的循环 也就是内循环forbreakprint("外循环执行")
"""
flag = False
while True:for i in range(0,5):strH = input("请输入指示")if strH == "quit":flag = Truebreak # break 只中断当前所在的循环 也就是内循环forif flag:break
# 问题 列表中存在用户 但是删除的时候一直提示该用户不存在
userList = [{"username":"admin","password":"123456"},{"username":"root","password":"123456"},{"username":"teacherLiu","password":"123456"}]
username = input("请输入用户名")flag = Truefor user in userList:
# 判断用户名是否存在 如果存在则删除if user["username"] == ve(user)print("该用户已被删除")flag = Falseif flag :print("该用户不存在")
函数:1.python内置函数 print() len() str()...2.自定义函数函数又叫方法"""
list = ["a","b","c"]
#for c in list :
# print(c)list1 = ["d","e","f"]
#for c in list1 :
# print(c) # 通过函数解决 定义一个函数 :遍历列表
def forList(paramList): #param 参数for c in paramList :print(c) # 调用函数
forList(list)
forList(list1)
函数格式: def 函数名称(参数):函数体注意:函数不被调用 则不会执行"""
# eat表示函数名称 无参数
def eat(): # 函数体:输出 大家去吃肉print("中午 大家去吃肉!")
# 调用函数
# eat()
主函数可以调用其他函数其他函数不可以调用主函数问题:两个自定义函数 可不可以相互调用?结论:1.方法可以调用其他方法2.函数不可以相互调用
"""
def A():print("这是A方法")B()def B():print("这是B方法")if __name__=="__main__":A()
阶乘: 求10的阶乘 10**1需求: 定义一个函数可以求出指定数字的阶乘分析:1.入参:是一个指定数字2.有返回值 就是该数字的阶乘"""def getMultipy(num):result = 1;for i in range(1,num+1):result *= ireturn resultprint(getMultipy(5))
主函数(main): 程序的入口 内置特点:1.主函数中的程序会被运行2.名称是固定的3.主函数可以调用其他函数 但是其他函数不能调用主函数格式:if __name__ == "__main__": 注意:下划线为两个横线
"""def add(a,b):return a+bif __name__=="__main__":print("我是主函数")# 主函数中调用加法函数sum = add(100,200)print("和为%d"%sum)
需求:计算1-某个参数累加的和,将值返回
分析:1.给定一个入参 入参是一个数字2.有返回值 返回值是一个求和的结果 1- 入参之间所有的数字 100 1-100的和
"""def countSum(endNum):sum = 0for i in range(1,endNum+1):sum+=ireturn sumprint(countSum(10))
递归函数(难点): 了解特点: 1.函数自己调用自己 2.一定要有终结点需求: 定义一个函数可以求出指定数字的阶乘分析:1.入参:是一个指定数字2.有返回值 就是该数字的阶乘
"""def getMulity(n):result =1if n > 0: result=n*getMulity(n-1)else: # 终结点result =1return resultprint(getMulity(5))
局部变量: 定义在函数内部的变量作用:为了临时保护数据 比如函数中的变量 只有在函数执行的时候才会有效.特点:1.不同的函数之间可以有相同的名称的局部变量 但是互不干扰.2.了临时保护数据全局变量: 既能在多个函数中使用,又可以在非函数中使用.定义在函数外部的变量.NameError: name 'name' is not defined
"""address = "三国" # 全局变量def add():name = "曹操" # 局部变量print(address)def delete():name = "孙权"print(address)add()
delete()
len() 获取字符串 或者列表的长度如何自定义实现有返回值函数: 通过return关键字即可格式:def 函数名(参数...):return 代码python中的函数可以返回多个值:格式:def 函数名(参数...):return 结果1,结果2....."""
list =["大乔","小乔","孙尚香"]
num = len(list)# 定义一个有返回值函数
def getNum():return 100n = getNum()
print(getNum())# 案例:计算两个数字的除数以及商 / %
def math(x,y):m = x/yn = x%yreturn m,nm , n = math(10,3)
print(m)
print(n)
函数的参数: 有参函数 无参函数函数的返回值: 无返回值 有返回值函数的类型:无参无返回值类型无参有返回值类型有参无返回值类型有参有返回值类型pass关键字:表示什么都不做invalid syntax:语法错误
"""
# 无参无返回值类型
def noParam():print("无参无返回值类型函数")# 无参有返回值类型
def noParanRet():return "无参有返回值类型"# 有参无返回值类型
def haveParam(param):# print(param)pass# 有参有返回值类型
def havaParamRet(param):return param+"Return"haveParam("haveParam")
如何获取对象:对象名 = 类名()调用方法: 对象.方法名()赋值属性: 对象.属性名 = 属性值获取属性值: 对象.属性名
"""
class Car():# 移动方法def move(self):print("车在移动")# 鸣笛方法def mingDi(self):print("车在鸣笛")# 表示老师的车
car = Car()# 开车 车移动 对象调用move方法
ve()# 给车对象设置属性
lor = "白色"
car.price = "20000"print("老师的车的颜色是%s"%lor)
类的构成:类名:属性:方法:类的格式:class 类名():"""class Dog():def run(self):print("狗在跑!")class Car():# 移动方法def move(self):print("车在移动")# 鸣笛方法def mingDi(self):print("车在鸣笛")
init函数:类中默认存在的一个初始化函数特点:当创建对应的类的对象的时候会默认执行该函数使用:当我们创建对象的时候就完成属性的赋值注意: 创建对象的时候 我们类后面的参数要和init的参数保持一致 除了有缺省值的参数TypeError: __init__() missing 1 required positional argument: 'sex'
"""class Student():# self 表示当前对象def __init__(self, name, age, sex="未知"):self.name = nameself.age = ageself.sex = sexprint("创建了一个学生对象")def study(self):print("学生在学习")if __name__ == '__main__':# 先创建对象 然后通过对象对属性进行赋值# student = Student()# student.name = "张飞"# 创建对象的时候就可以完成赋值student2 = Student("李逵",18)print(student2.name)print(student2.age)print(student2.sex)
问题:打印对象的时候 输出的是对象的计算机内存中的地址# <__main__.Student object at 0x04A90890> 表示的是该学生对象的计算机内存中存储的位置希望怎么解决:打印对象的属性信息.解决方案:类中存在一个默认函数 __str__ 有返回值的函数str函数的执行特点:1.当我们使用print函数输出对象的时候就会默认调用str函数2.str函数的返回值会被输出到控制台重写str函数 可以达到输出信息的控制
"""class Student():def __init__(self, name ,age):self.name = nameself.age = agedef __str__(self):print("你好啊")return "%s的年龄是%d"%(self.name,self.age)def study(self):print("好好学习 天天向上 键盘敲烂 年薪过万")if __name__ == '__main__':list = ["a","b","c"]tuple = (1,2,3,4)dist = {"name":"王五"}print(list)print(tuple)print(dist)student = Student("刘亦菲",18)print(student)
需求:办事员:属性:年龄,性别函数:registration 办证,根据不同的钱数,办不同的证书.打印对象的时候 输出对象的年龄和性别
分析:类名称:Clerks属性:age sex函数:函数名称 :registration有参数:money有返回值:对应的证书 非会员证书 会员证书 铂金会员证书
"""
class Clerks():def __init__(self, age, sex):self.age = ageself.sex = sexdef __str__(self):return "办事员的性别为%s,年龄为%d"%(self.sex,self.age)def registration(self,money):if(money < 0):return "非会员证书"elif(money == 88 ):return "会员证书"elif (money == 888):return "铂金会员证书"else:return "系统错误"if __name__ == '__main__':# 创建一个办事员的对象clerks =Clerks(52,"女")# 办证result = istration(88)print(result)print(clerks)
面向对象的语言: 封装 继承 多态封装:通过对象.属性直接修改属性值的时候导致不安全解决问题:属性封装:1.将属性定义为私有属性在属性的前面添加两个下划线(__) 该属性就是私有属性 不能在外部通过对象.属性的方式更改2.添加公共的方法 可以修改方法的私有:方法前面加__特征: 1.外部不可以访问 2.内部可以自己调用
"""
class Student():def __init__(self, name ,age):self.__name = name # name属性就是私有的self.__age = age# 私有函数只能在类自己内部被调用self.__eat()def __str__(self):return "%s的年龄是%d"%(self.__name,self.__age)def study(self):print("好好学习 天天向上 键盘敲烂 年薪过万")def setName(self,name):self.__name = name# 设置私有的函数 就是在函数前面加__def __eat(self):print("我在吃饭")if __name__ == '__main__':# 创建杨紫对象student = Student("杨紫",20)# 修改对象名字 设为私有之后属性的值不能在外部通过.的方式修改student.__name = "杨华"print(student)# 通过公有的方法修改私有属性student.setName("杨美玲")print(student)
在某些情况下类和类之间有继承关系: 动物 猫 狗子类如何继承父类:格式: 在子类的类名后面的小括号中写父类名称即可例子: class Dog(Animal) Dog继承了Animal特点:1.父类公有的的方法和属性都会继承给子类 私有的不能被继承2.子类可以重写父类的方法当子类有和父类同名的函数的时候 即表示子类重写了父类的方法,当子类对象调用该方法的时候执行子类的方法.
"""
class Animal(): # 动物def __init__(self,name):self.name = namedef run(self):print("动物在跑")class Dog(Animal):def call(self):print("汪汪汪")class Cat(Animal):# 重写父类的方法def run(self):print("猫咪在跳舞")def call(self):print("喵喵喵")if __name__ == '__main__':# 创建Dog对象dog = Dog("小柯基")# 继承父类的属性和方法dog.run()print(dog.name)cat = Cat("橘猫")cat.run()
多继承: 一个子类有多个父类格式:多个父类在小括号中使用逗号隔开:子类名称(父类1,父类2....)特点:1.继承了多个父类的公有的方法和属性2.当多个父类中出现同名函数的时候,子类继承的是小括号中写的第一个父类的该方法3.子类重写方法 那么执行的就是子类重写后的方法
"""class Donkey(): # Donkey 驴def run(self):print("一驴当先")def donkeyCall(self):print("驴在叫")class Horse(): # Horse 马def run(self):print("万马奔腾")def horseCall(self):print("马在叫")class Mule(Horse, Donkey ): # Mule骡子def run(self):print("骡踏飞燕")if __name__ == '__main__':# 创建骡子对象mule = Mule();mule.donkeyCall()mule.horseCall()mule.run();
python中的方法类型:对象方法:1.只能被对象调用2.必须要有一个参数self 对象本身类方法:1.可以被对象和类调用2.必须要有一个参数 cls 类本身3.需要在方法上面有一个标识 @classmethod案例:通过一个类方法 对类属性进行修改静态方法:1.不需要有类本身 或者对象本身的参数2.不能静态方法中调用类方法 或者对象方法3.需要有一个标识4.对象和类都可以调用"""class MethondDemo():name = "方法案例"# 创建一个对象方法def obj(self):pass@classmethoddef clsMethod(cls):print("该函数为类函数")@classmethoddef setName(cls,name): # cls 类本身cls.name = name@staticmethod #static 静态def staticMethod():print("静态方法")if __name__ == '__main__':# 类调用MethondDemo.clsMethod()# 对象调用method = MethondDemo()method.clsMethod()MethondDemo.setName("修改成功")print(MethondDemo.name)method.staticMethod()
在想用到其他模块的代码的时候,需要我们进行模块导入的操作.导入python自带的模块:math:第一种方式: import 模块名称第二种方式: from 模块名称 import 导入的函数或者变量名称 第二种最好第三种方式: from 模块名称 import * * 表示所有导入模块的快捷键:alt+Enter(回车)
"""
# import math
# from math import ceil
# from math import pi
# from math import *
from math import ceil, piif __name__ == '__main__':"""# ceil 天花板 7.5: 8 7.1 :8num = il(7.5)print(num)# math中定义了一个变量 3.1415926print(math.pi)""""""num = ceil(6.8)print(num)print(pi)"""num = ceil(6.8)print(num)print(pi)
system:系统sys模块 :了解"""import sys
# sys的path变量
print(sys.path)
# 获取当前的系统环境 win32 python内置模块的bug
print(sys.platform)
# 函数 程序退出 quit exit
it()print("程序执行到第15行")
请定义一个交通工具(Vehicle)的类其中有:
属性:速度(speed)体积(size)等等
方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等.最后在main()中实例化一个交通工具对象并
通过方法给它初始化speed,size的值并且,打印出来。另外调用加速减速的方法对速度进行改变。"""class Vehicle():def __init__(self,speed,size):self.__speed =speedself.size = sizedef move(self):print("交通工具在运行")def setSpeed(self,speed):self.__speed =speeddef speedUp(self):self.__speed += 10 # 踩油门def speedDown(self):self.__speed -=10 # 踩刹车def __str__(self):return "该交通工具的速度为%d,体积为%d"%(self.__speed,self.size)if __name__ == '__main__':# 实例化一个交通工具对象car = Vehicle(120,8)# 打印对象信息print(car)# 踩油门car.speedUp()print(car)# 踩刹车car.speedDown()print(car)# 设置一个80的速度car.setSpeed(80)print(car)
创建一个类 为该类定义三个函数 分别执行下列操作1、传递两个整数值并找出其中较大的一个值函数入参 :两个数字 结果:较大的那个 内容 :比较2、传递三个int值并求出其乘积函数入参 :3数字 结果:乘积 内容 :乘法运算3、传递两个字符串值并检查其是否相同函数入参:2个字符串 结果:bool 内容:比较4、在main方法中测试函数的调用"""
class DemoUtil():# 第一个函数 :传递两个整数值并找出其中较大的一个值def compare(self,a,b): # compare 比较if a > b:return aelse:return b# 第二个函数 :计算3个数字的乘积def chengfa(self,a,b,c):return a*b*c# 传递两个字符串值并检查其是否相同def compareStr(self,str1,str2):return str1 == str2if __name__ == '__main__':demoUtil = DemoUtil()maxNum = demoUtilpare(100,99)print("较大的值为%d"%maxNum)result = demoUtil.chengfa(1,2,3)print("乘积的值为为%d" % result)flag = demoUtilpareStr("abc","ab")print("两个字符串的比较结果为:", flag)
定义一个 汽车的类,定义一个 人的类。
要求汽车中有乘坐的功能,和下车的功能,并能把当前乘坐的人的信息打印出来。"""class Car():# 乘坐汽车def chengzuo(self, person):print("当前上车的人为:", person)# 下车def xiache(self, person):print("当前下车的人为:", person)class Person():def __init__(self, name):self.name = namedef __str__(self):return self.nameif __name__ == '__main__':car = Car()person = Person("杨福军")car.chengzuo(person)car.xiache(person)
类属性:定义在类内部,类方法外部的变量 我们称之为类属性特点:1.可以被类使用 也可以被对象使用2.当我们通过对象修改类属性值的时候 不影响类的类属性值的值当我们通过类修改雷属性值的时候 不影响对象的类属性值的值3.类不能调用对象属性
"""
class Mobile():name = "手机" # 类属性def __init__(self,type): # type属性 就是对象属性pe = typeif __name__ == '__main__':# 类调用print(Mobile.name)# 对象调用m = Mobile("HuaWei")print(m.name)m.name ="移动手机"print(m.name)print(Mobile.name)Mobile.name ="移动手机-类"print(Mobile.name)print(m.name)# 类不能调用对象属性pe)
mode:类型非常多r:只读 从头部开始读 io.UnsupportedOperation: not writablew:写入 每次都是从头部开始写 原有的内容会被删除a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。案例:写入"Hello Word!!!" 到
"""
# 第一步 设置为w模式
f = open(",mode="a",encoding="UTF-8")
# 第二步 通过write函数写入
f.write("Hello Word!!!")
# 第三步 关闭file 不关闭 会造成计算程资源浪费 释放资源
f.close()
读取文件内容:1.通过open函数获取文件对象2.执行read函数 需要指定读取的字符"""
# 第一步 通过open函数获取文件对象
f = open(",mode="r",encoding="UTF-8")
# 第二步 通过read方法 读取字符
content = f.read(20)
# 第三步 输出读取到的内容
print(content)
# 注意 当多次读取的时候 每次都是从上一次读取到的位置开始读
content2 = f.read(6)
print(content2)
# 第四步 释放资源
f.close()
for循环写入100条数据到文件中1.获取文件对象2.for循环 100次3.每次都要想文件中写入内容
"""
fileObj = open(",mode="w",encoding="UTF-8")for i in range(0,100):fileObj.write("当前是第%d次写入n"%(i+1))fileObj.close()
readline()函数:可以读取一行分析:1.创建一个file对象2.使用循环读取每一行的内容 直到读取内容为空3.将读取到的内容写入到一个列表中
"""
fileObj = open(",mode="r",encoding="UTF-8")
list = []
while True:# 读取每一行文字内容name = adline()print(name)# 如果为空则不再继续读取if name == "":breakelse: # 把读取到的姓名添加到列表中list.append(name)
# 输出列表内容
print(list)
# 释放资源
fileObj.close()
如何实现不论是否发生异常都必须执行 使用关键字finallyfinally:我们有一些场景 需要保证代码无论是否异常都要执行 需要放到finally里
"""
a =input("请输入第一个数")
b =input("请输入第二个数")
try:int(a)/int(b)
except Exception as info:print(info)
else: # 不发生异常时候执行print("不发生异常的时候执行")
finally: # 不管是否发生异常都要执行print("不论是否发生异常都要执行")
异常处理:消极处理 一般是在函数中raise 异常类"""def chufa(a, b):if b == 0:raise Exception("除数不能为0") # 抛出异常def testAge(age):if age <= 18:raise Exception("您的年龄不允许进入")# chufa(10, 0)
print("第一行代码")try:testAge(16)
except Exception as e:print(e)print("第二行代码")异常处理:消极处理 一般是在函数中raise 异常类"""def chufa(a, b):if b == 0:raise Exception("除数不能为0") # 抛出异常def testAge(age):if age <= 18:raise Exception("您的年龄不允许进入")# chufa(10, 0)
print("第一行代码")try:testAge(16)
except Exception as e:print(e)print("第二行代码")
"""
拷贝一个文件
ReadMe2 = open(",mode="r",encoding="UTF-8")
ReadMe = open("新的",mode="w",encoding="UTF-8")while True:content = adline()if content == "":breakelse:ReadMe.write(content)ReadMe2.close()
ReadMe.close()
本文发布于:2024-02-01 11:19:34,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675757636235.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |