首页 > 编程语言 >Python语法进阶之路

Python语法进阶之路

时间:2024-09-22 19:49:08浏览次数:3  
标签:info 进阶 Python self 语法 函数 print def name

一、Python基础

1.1 注释

定义和作用

对代码解释说明,增强可读性

单行注释

#

多行注释

"""

这是一个多行注释

""" 

1.2 变量及变量类型 

定义和作用

计算机目的是计算,编程是为了更方便计算,计算对象就是变量,可以在程序运行过程中,临时存储数据 

变量基本使用

变量初始化

变量名  =  变量值 

a = 200

a = 100        变量值可以变化

b = 100

c = 300

d = b + c        变量可以运算

print(变量名)        直接调用即可输出 

遇到不同类型的数据怎么办,怎么用变量来存储?
例如

  • 小伙的名字叫鲁班
  • 今年18岁
  • 身高一米半半
  • 是个纯爷们儿

name = "鲁班"
age =18
height = 1.55
is_man = True

变量是什么类型的,取决于它储存的数据的类型,常用的数据类型有:

  • 数字 number: 其中整数 int, 浮点数 float
  • 字符串 str (也叫 string)
  • 布尔类型 bool (也叫 boolean)
  • 列表 list
  • 元组 tuple
  • 字典 dict

# 可以使用type()函数,来获得数据的类型

print(type(1))
print(type(name)) 

 1.3 标识符和关键字

什么是标识符
标识符就是程序中用来标识变量,函数,类或其他对象的名字
标识符的命名规则

  • 只能包含字母,数字,下划线,中文(不推荐)
  • 不能以数字开头区分大小写 (如 Andy 和 andy 是不同的标识符)
  • 不能是python的关键字 (关键字是Python已经使用的有特殊功能的标识符)。

 变量命名规范
变量名应简短而有意义,如: name="张三",尽量别用 a="张三'单词使用小写字母,多个单词用下划线分割,如 total sum,user name

文件的命名和函数的命名都可以参照这种规范,后续类的命名会有一点区别

1.4 输入和输出 

对输入和输出的理解

  • 生活中,例如去ATM取款你的卡,输入的密码和金额, 都是输入,ATM机吐的卡和钱都是输出
  • 软件里也一样,你操作软件的过程都是输入,软件反馈的结果都是输出 
print("我爱中国")

# 换行打印,\n 后的内容会在下一行打印
print(“我爱\n中国")

# 为了输出信息更完整,经常在print()语句中使用,来拼接多个值
slogan="我是纯爱战神
print(slogan)
print("我的s1ogan是:",slogan)print("我的s1ogan是:",1)

常见的获取键盘输入
可以使用 input()函数等待并获取用户键盘上的输入,用户以回车结束输入,输入内容被认为是字符串

print(1)
input()
print(2)
password =input()
print(password)
# 推荐格式 变量名 = input"提示信息:")
password =input("请输入密码:")
print(password)

关于函数:
函数可以是别人或自己写的,可以直接使用,不用关心内部实现,目前学过的函数有:print()type()input()

 类型转换函数

first_number = input("请输入第一个数字:")
second_number = input("请输入第二个数字:")
result =first_number +second_number
print("计算结果是:",result)
# 计算结果出错,因为数据类型是字符串,相加的效果是拼接的计算,不是数值上的相加
# 改为
result=int(first_number)+int(second_number)

常用的几个类型转换函数

  • int(x)表示将 x转换为一个整数
  • float(x) 表示将 x转换为一个浮点数
  • str(x)表示将x转换为一个字符串
  • bool(x)表示将 x转换为一个布尔类型 

1.5 运算符

按优先级从最高到最低:

 1.6 判断语句

if-elif-else判断语句结构 

if 条件1:

        事情1

elif 条件2:

        事情2

elif 条件3:

        事情3
else:
        事情4

说明:

  • 如果满足条件1,执行事情1,代码块执行结束
  • 否则,如果满足条件2,执行事情2,代码块执行结束
  • 否则,如果满足条件3,执行事情3,代码块执行结束
  • 否则,执行事情4,代码块执行结束

代码示例:

score =77
if 90 <= score <= 100:
    print("本次考试成绩为A")
elif 80 <= score < 90:
    print("本次考试成绩为B")
elif 70 <= score < 80:
    print("本次考试成绩为C")
elif 60 <= score < 70:
    print("本次考试成绩为D")
else:
    print("本此考试成绩不及格"
#也可以写成 if score >= 90 and score <= 100:

if嵌套判断:

a=“帅”
b="善"
c="没有腹肌"
if a =="帅":
    if b ==“善”:
        if c =="有腹肌":
            print("处对象")

match-case判断

match x:
case 1:
    print('x is 1")
case 2:
    print(“x is 2")
case 3:
    print("x is 3")

1.7 循环

Python三大控制结构:顺序、分支、循环,用于控制代码执行顺序

  •  顺序: 从上而下,顺序执行代码
  • 分支: 根据条件判断,确定执行哪个分支的代码
  • 循环: 让特定代码块中的代码重复执行

1.7.1 while循环 

基本语法

当 条件(满足时):

        要做的事
while True:
        print("He1lo world")
# 上面缺少了条件限制,导致了死循环

i=0
while i < 5:
        print("He11o world")
        i=i+1 

计算1-100的和

i= 1
sum=0
while i <= 100:
    sum=sum +i
    i=i+1
print(sum)

计算1-100的偶数和 

i = 1
sum=0
while i <= 100:
    if i%2 == 0:
        sum= sum + i
    i = i+1
print(sum)

while嵌套

whi1e(天)条件:
    事
    while(题)条件:
        事
day = 1
while day <= 7:
    print("今天是第", day,"天")
    problem=1
    while problem <= 3:
        print("做了",problem,“道题”)
        problem += 1
    day += 1

1.7.2 for循环 

python 中的 for 循环, 可以遍历任何可迭代对象, 如: 字符串,列表,元组,字典

遍历可迭代对象:指按顺序,逐一得到全部数据,且无遗漏

for x in "abcdefg":
    print(x)
# 如果固定需要循环100次怎么办
for i in range(100):
    print(i)
# 效果等同于
i=0
while i < 100:
    print(i)
    i+= 1

a=range(5)        

# range()函数返回的是一个可迭代对象(类型是对象),打印时不能直观看到数据
b=list(a)        

# list函数可以把可迭代对象转为一个列表
print(b)

1.7.3 break和continue

break
作用: 立即终止当前循环,并跳出循环体外,并继续执行循环之后的代码

i = 1
while i<=5:
    print(i)
    if i == 3:
        break
i += 1
print(i)

for x in "abcdefg":
    if x == "e"
        break
    print(x)
print(x)

continue
作用: 跳过本次循环中的剩余代码,直接进入下一次循环

会导致死循环#
i = 1
while i <= 5:
    print(i)
        if i == 3:
            continue
    i += 1
# 死循环的修改思路i= 1
while i <= 5:
    i += 1
        if i == 3:
            continue
    print(i)

for x in "abcdefg":
    if x == "e"
        continue
    print(x)

注意点
break 和 continue 只能用在循环中,除此以外不能单独使用

break 和 continue 在嵌套循环中,只对最近的一层循环起作用 

二、Python高级数据类型 

2.1 字符串 

什么是字符串:双引号或者单引号中的数据就是字符串 

"123456""3.14""{[()]}'"!@#$%^'
震惊
print(type(a))

字符串格式化

字符串格式化就是把变量嵌入到字符串中,推荐使用字符串.format()

#电子生日贺卡中的祝福语,"He110 xx,祝你 xx岁生日快乐!"
name ="张三
age =18
print("He11o",name,",祝你",age,"岁生日快乐!")
print(“He11o {},祝你{}岁生日快乐!".format(name,age))

# 自定义名片
name = input("请输入你的名字:")#张三
position =input("请输入你的职位:")#软件测试工程师
company_name -input("请输入你的公司名:")#法外狂徒股份有限公司
print(“_”* 30)
print("姓名:{}".format(name))
print("职位:{}".format(position))
print("公司名称:{}".format(company_name))
print(“_” * 30)

字符串的下标
含义:下标其实就是编号,比如高铁上的座位号,超市储物柜的编号,用 字符串[下标]表示,如“abc"[1]

s="abcdef"
#下标从左往右,从0开始
print(s[0])
print(s[3])
print(s[6])#
# 超出下标范围会标错
#还有一套下标是从右往左,从-1开始
print(s[-1])
print(s[-2])
print(s[-6])

 切片

  • 含义:切片指截取其中一部分,字符串/元组/列表都支持切片
  • 语法: [起始下标:结束下标:步长],从起始位开始,到结束位为止(不包含结束位本身),步长表示切片间隔 
a="abcdefgh"
print(a[:])        #取所有,默认步长为1
print(a[::2])      #取所有,步长为2
print(a[:3])       #取前3位
print(a[5:])       #取第5位以后的内容
print(a[1:5])      #取第2,3,4,5位
print(a[1:5:2])    #取第2位和第4位
print(a[1:-1])     #取第2位到倒数第2位
print(a[5:1:-2])   #反向(从右向左),取第6位和第4位
print(a[::-1])     #:反转字符串

字符串常见操作 

 len(),获取字符串长度

s="听君一席话,如听一席话"
print(len(s))

find() 和 index(),检测字符串中是否包含某个子串,如果包含,则返回第一个找到的子串的初始下标

s="听君一席话,如听一席话!"
print(s.find(","))
print(s.index(","))
# 区别在于,如果找不到,find 返回-1,index则抛出异常
print(s.find("二"))
print(s.index("二"))
#[了解]s.find(sub,start,end)中
#start 表示搜索的起始位置,默认为0[可选]
#end 表示搜索的结束位置,默认为字符串的长度[可选]
# index()也支持这种写法
print(s.find("一席话”,0,11))
print(s.find("一席话”,6,11))

replace(),替换字符串中的某些子串,可以控制替换次数 

s="听君一席话,如听一席话"
print(s.replace("一","二"))
print(s.replace("一","二",1))

count(),返回字符串中某个子串出现的次数

s="听君一席话,如听一席话"
print(s.count("一席话"))
print(s.count("一席话",6,11))

split(), 以某字符为分隔符进行切片,如果 maxsplit 有指定值,则仅分割 maxsplit 次

s="听君一席话,如听一席话"
print(s.split("一"))
print(s.split("一",1))

startwith()和 endwith(),检査字符串是否以某子串为开始或结束,是则返回 True,否则返回 False

s="听君一席话,如听一席话"
print(s.startswith("听君"))
print(s.endswith("话"))

lower()和 upper(),把字符串中的所有字符转换为 小写 或 大写 字符

s="Hello world"
print(s.lower())
print(s.upper())

join() 格式为 分隔符.join(数据),数据可以是字符串,列表, 元组,字典,返回值是字符串

s="听君一席话,如听一席话!"
print("~".join(s))
l =[“广东省",“广州市","天河区..."]
print("".join(l)) 

[了解]除了上述常见操作外,字符串单词首字母大写,字符串的对齐,判断字符串是否只包含空格等各种操作 

2.2 列表

什么是列表
列表(List)是 python 中使用非常频繁的数据类型,在其他语言中通常叫做 数组.语法上用[]来定义一个列表,数据之间用,分割,例如:

name_list =["张三”,"李四",“王五”]

列表的索引从0开始(索引就是下标),引用超出索引就会抛出异常 

name_list =〔"张三","李四","王五"]
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(name_list[3])

列表可以储存不同类型的数据

name_list=["张三",100,[1,2]]
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(name_list[3]) 

 

列表的遍历

name_1ist =["张三","李四","王五"]
for name in name_list:
    print(name)

i=0
while i < len(name_1ist):
    print(name_list[i])
    i += 1 

列表增删改查操作 

  • append:list.append()        把数据加到列表末尾
  • extend:list.extend()          把一个可迭代对象逐一添加到列表中
  • insert:list.insert(列表元素,"要添加的元素")        在指定位置前插入数据
  • pop:list.pop(索引)        根据索引删数据
  • remove:list.remove(值)        根据列表中元素值删数据
  • list[索引]=值        改列表数据
  • in 和 not in 用于判断列表中是否存在某数据,成功为True,失败为False
  • index和count,与字符串中的用法相同

排序:sort方法是将列表按顺序正序排列,默认从小到大,参数reverse=True可改为倒序

注意: 需要排序的列表中的数据需要是同一类型的,同时存在整数和字符串就不能排序

列表生成式 

# 列表生成式顾名思义,可以帮我们生成列表
# 生成0~9的10个数
a=[x for x in range(10)]
print(a)
# 生成1~10
b=[x for x in range(l, 11)]
print(b)
# 生成10以内的奇数/偶数
c=[x for x in range(1,11) if x%2==0]
d=[x for x in range(1,11) if x%2==1]
print(c)
print(d)
# 生成10以内的各数的平方
e=[x**2 for x in range(l,11)]
print(e)

2.3 元组

什么是元组
元组 (Tuple)是与列表类似,语法上用()来定义一个元组

l=[1,2,3]
t=(1,2,3)
print(type(l))
print(type(t))

元组常见操作 

  • 元组中的数据不能修改
  • 对元组内的数据的操作只支持查询类操作,如:index,count 

2.4 集合

 什么是集合

  • 集合(Set),和列表,元组都很像,区别就是集合用于保存不重复的数据
  • 语法上,使用 {} 或者 set()进行创建
  • 集合也是可变的数据类型,可以有增删改查等各种操作
# 使用{}创建集合
collection={1,2,3,4}
print(type(collection))
# [推荐]使用set()函数创建集合,集合最主要的作用就是去重
l=[1,2,3,3]
t=(1,2,3,3)
c1=set(l)
c2=set(t)
print(c1,type(c1))
print(c1,type(c2))

2.5 字典 

 什么是字典
字典 (Dict),语法上用 {}来定义一个字典,数据之间用,分割,每个数据都是键值对的形式,包含键名(key)和键值(value)两个部分,例如:

d = {}
print(type(d))
t_info ={"name":"杰哥","sex":"男","age":18,"address":"广州","hobby":["吹牛","看电影"]}

字典中找某个数据不是根据下标来找的,是根据key, 如:
 

t_info ={"name":"杰哥”,"sex":"男","age":18,"address":"广州","hobby":["吹牛","看电影”]}
print(t_info["name"])
print(t_info["hobby"])

字典的常见操作
增,使用 变量名[“键“〕 = 值 时,如果”键"在字典中不存在,就会新增这个数据

t_info = {"name":"杰哥","sex":"男","age":18,"address":"广州","hobby":["吹牛","看电影"]}
t_info["score"]= 10
print(t_info)

删,pop和 clear 方法

t_info ={"name":"杰哥","sex":"男","age":18,"address":"广州","hobby":["吹牛","看电影"]}
t_info.pop("age")
print(t_info)
t_info.clear()
print(t_info) 

 

改, 和新增一样, 使用 变量名[“键"〕= 值 时, 如果"键"在字典中存在,就好更新这个值

查:

t_info ={"name":"杰哥","sex":"男","age":18,"address":"广州","hobby":["吹牛","看电影"]}
# 查询某个键对应的值
# print(t_info["a"])
# 键不存在时会报错
print(t_info.get("a"))
# 键不存在时会返回 None

# 查询字典的长度
print(len(t_info))

# 查询字典中的键列表,值列表,键值对元组的列表(以前返回列表,新版本python不再返回列表类型,但可以当做列表来使用)
print(t_info.keys())
print(t_info,values())
print(t_info.items())

# 遍历
for key in t_info.keys():
    print(key)
for value in t_info.values():
    print(value)
for item in t_info.items:
    print(item)
for key,value in t_info.items():
    print(key,value)

python中有哪些数据类型,其中可变和不可变得数据类型都有什么?
常见的数据类型有整型int,浮点型float,布尔bool, 字符串string,列表list,元组tuple,集合set,字典dictionary

  • 其中可变数据类型有: 列表,集合,字典
  • 不可变数据类型有: 数字,布尔,字符串,元组 

三、Python的函数 

3.1 函数介绍

函数定义:可以被重复使用的代码块

使用步骤:定义函数,封装独立功能,调用函数

查看函数使用文档:print(help(函数)) 

3.2 函数的参数 

def add_2num():
    x=1
    y= 2
    print(x+y)
add_2num()
# 这个函数只能把固定的两个数相加,怎么样让这个函数适用于可变的两个数相加,答案就是参数
def add(x,y):
    print(x+y)
add(2,3)

参数的基本含义:

  • 形参: 在定义时使用的,用于在调用时接收变量值的形式参数 (如上述代码中的x和 y)
  • 实参: 在调用时传入的实际参数值(如上述代码中的 2和 3)

注意

# 注意,调用参数时,参数的位置和数量是一致的
# add(1,2,3)    # 参数数量不一致会报错
add(y=1,x=2)     # 如果位置需要变动,则需要以 变量名=参数值 的形式传参
# 参数的默认值 (缺省值),需保证带有默认值的参数在未尾,def add(x=1,y): 是错误的
def add(x,y=1):
    print(x+y)
    add(1)
add(2,2)

参数拓展

# def len(*args,**kwargs):在这个定义中 *args 和 ** kwargs 是什么?
# 这些用于传参数量不确定的情况
# *args 用于接收不确定个数的参数,"它会将传入的参数打包成一个元组
def demo(*args):
    print(args)
demo(1,2,3)
demo((4,5,6))
demo()
# **kwargs 用于接收不确定个数的关键字参数(键=值),并打包成一个字典
def demo(**kwargs):
    print(kwargs)
demo(a=1,b=2,c=3)

 

说明
args 和 kwargs 是可以改变名字的,但不推荐, args 是arguments (参数的缩写), kw 是keyword (关键字)的缩写
参数定义是有顺序的: 必选参数,默认参数,可变参数,如:

def demo(a,b,c=1,*args,**kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)
demo(1,2,3,4,5,6,aa=7,bb=8,cc=9)

3.3 函数的返回值 

什么是返回值
在程序开发中,有时候会希望一个函数执行结束后,告诉调用者一个结果,这个结果就是返回值

  • 语法上,使用 return 这个关键字来返回结果 
def add(x,y):
    print(x+ y)
    a= add(1,2)
print(a)    # 结果是 None,说明add函数只关注打印和的过程,没有返回值
def add(x,y):
    return x+y
a= add(1,2)
print(a)print(add(a,3))

#函数执行到了 return 就会结束
demo():
    print(1)
    print(2)
    return 0
    print(3)
    print(4)
demo()

3.4 函数的执行过程

# 函数中三大结构和嵌套调用时的执行过程
def demo1():
    print(1)
    print(2)
    print(3)
def demo2():
    print(1)
    if True:
        print(2)
    print(3)
def demo3():
    print(1)
    for i in range(3)
    print(2)
    print(3)
def demo4_a():
    print("a_start")
    print("a_stop")
def demo4_b():
    print("b_start")
    demo4_a()
    print("b_stop")

demo1()
demo2()
demo3()
demo4_b()
demo4_a()

3.5 局部变量和全局变量

局部变量和全局变量

  • 从含义上说,局部变量定义在函数内部,全局变量定义在函数外部

从作用域的角度说

  • 局部变量只能在函数内部使用,函数执行结束后,变量会被回收,不同函数可以有同名的局部变量。
  • 全局变量可以在全局使用 (不论函数内外),但如果全局变量太多可能导致不好维护

局部变量是在函数内部定义的变量,只能在函数内部使用

注意:

  • 局部变量和全局变量是个相对的概念,示例中的局部是函数内部,全局是文件全局
  • 未来大家可能会接触到作用域更大的变量,比如整个项目都可以使用的,这种也是全局变量

如何在函数内部修改全局变量 

# 在函数内部定义与全局变量同名的变量时,两个变量是不同的,并不能直接修改全局变量
a =1
    def demo():
    a =2
demo()
print(a)

# 可以使用 globa] 关键字引用全局变量
b=1
def demo():
    global b
    b=2
demo()
print(b)

 3.6 匿名函数lambda

# 匿名函数的定义语法是 Tambda 参数:表达式
# 匿名函数中不能使用 print,表达式就是返回值(无需写return)
# lambda x,y:x+y    #这样就定义了一个两个数相加的匿名函数

# 应用1
sum=lambda x,y:x+y
print(sum(1,2))

#应用2,在高阶函数中,作为参数传递
def sq(x):
    return x**2
print(list(map(sq,[xfor xin range(10)])))
print(list(map(lambda x:x**2,[xfor xin range(10)])))

四、面向对象编程(OOP) 

4.1 基本理解

面向对象和面向过程编程思想

两种思想的区别

  • 面向过程: 强调的是步骤,过程,每一步都是自己亲自去实现 用怎么做的思想来解决问题
  • 面向对象:找个对象,让对象来实现(专业的人干专业的事儿),用谁来做的思想来解决问题
  • 面向对象是基于面向过程的

面向对象编程的优点

  • 面向过程: 根据业务逻辑从上到下写代码(之前的函数式编程, 都是面向过程的)
  • 面向对象: 减少了重复代码,高度封装,易扩展

4.2 类和对象

类是抽象的,对象是一个具体的事物

# 定义一个Dog类
class Dog:
    pass
# 定义一个对象dahuang
dahuang = Dog()
xiaobai = Dog()
# isclass函数 用于判断是不是一个类,True表示是类 False表示不是类
# print(inspect.isclass(Dog))
# print(inspect.isclass(dahuang))
#ctr1 + D 快速辅助并粘贴到下一行

# type函数,表示查看一个数据的类型# print(type(1))
# print(type(dahuang))

# isinstance函数来判断参数1是否是参数2的一个实例(对象)
# print(isinstance(l,int)
# print(isinstance(dahuang, Dog))

# id函数,可以查看变量的内存地址
print(id(dahuang))
print(id(xiaobai))

 4.2.1 类的构成

类 是对一群具有相同的特征或者行为的事物的统称

  • 特征 被称为 属性
  • 行为 被称为 方法

如何体现对象和对象之间的区别?
通过属性和方法来体现同一个类的不同对象的区别

类由3个部分构成

  • 类的名称: 类名
  • 类的属性: 拥有的特征 (名词)
  • 类的方法: 拥有的能力(动词)

示例
"人"类 

  • 类名:Person
  • 属性: 国籍, 性别,年龄,身高, 体重...
  • 方法: 学习,跑,打游戏... 

注意
在程序开发过程中,只关注需求中涉及的属性和方法
        如一个人的身份证上不会记录身高,体重等属性,也不需要知道这个人游戏打得好不好 

4.2.2 类的设计

开发人员如何分析需求,确认程序中需要包含哪些类?

用名词提炼法分析业务,出现的名词,通常就是找到的类 

4.3 基础语法 

4.3.1 定义类和对象

# 创建类
class Hero():
# 定义属性
    hp =1000
# 定义函数
    def info(se1f):
        print("我是一个英雄")
# 或者
class Hero:
    hp =1000
        def info(self):
            print("我是一个英雄")

# 创建对象
anqila = Hero()

说明

  • 类名的命名规则按照"大驼峰命名法",每个单词的首字母大写,单词和单词之间没有下划线
  • info 是一个实例方法,第一个参数一般是self, 表示实例对象本身,当然了可以将self换为其他名字,其作用是一个变量,这个变量指向了实例对象

4.3.2 类中的方法

4.3.2.1 魔术方法

有些特殊方法,在python代码执行时可以自动调用,这些方法被称为魔术方法

  • 魔术方法名的两侧各有2个下划线
  • 常用的魔术方法有__init__,__str__,__del__等
  • 软件测试人员最常用的是__init__方法,用来完成属性的初始化,它在创建对象时默认执行 
class Hero:
    def _init_(self):
        self.name = None
        self.sex= None
        self.hp=0
        self.attack=0
    def info(self):
        print("我是一个英雄")


anqila=Hero()
chengyaojin=Hero()
print(anqila.name)
print(anqila.sex)
print(anqila.hp)
print(angila.attack)
print(chengyaojin.name)
print(chengyaojin.sex)
print(chengyaojin.hp)
print(chengyaojin.attack)

每个对象好像有自己的属性,又没有 

class Hero:
    position ="泉水"
    def __init__(self,name,sex,hp, attack):
        self.name =name
        self.sex=sex
        self.hp =hp
        self.attack =attack
    def info(self):
        print("我叫{},性别{,血量为{},攻击力为{}".format(self.name,self.sex,self.hp,self.attack))

anqila=Hero("安琪拉","女",1000,200)
chengyaojin = Hero("程咬金”,"男”,8000,666)
print(angila.position)
angila.info()
chengyaojin.info()

 类属性和实例属性

Class 类名:
    # 类属性,表示的是类的共性,如汽车类,共性的内容有,有轮子,有座椅,有方向盘,有挡风玻璃
    类属性名1 = 值1
    类属性名2 = 值2

    # 实例属性,表示的是对象(实例)的个性,轮子数量,轮毂样式,座椅数量,是不是敞篷
def __init__(se1f,参数1,参数2):
    self.实例属性名1= 参数1
    se1f.实例属性名2 = 参数2
4.3.2.2 实例属性 

特点:

  • 实例方法是每个对象独有的
  • 实例方法需要带 se1f 参数
  • 主要用于处理实例属性,也可以访问其他实例方法 
def 实例方法(self,参数):
    pass

调用:类.实例方法(参数) 

4.3.2.3 类方法 

特点

  • 类方法是针对类定义对的方法
  • 类方法需带 c1s 参数
  • 主要用于处理类属性,也可以访问其他类方法

语法:

@classmethod
def 类方法名(c1s):
    pass

类方法需要用装饰器 @classmethod 来标识, 告诉python解释器这是一个类方法

调用
类名.类方法名()
 

class Hero:
    born_position ="泉水"
    def __init__(self,name,sex, hp, attack):
        self.name = name
        self.sex=sex
        self.hp= hp
        self.attack =attack
    def info(self):
        print("我叫{},性别{},血量为{},攻击力为{}".format(self.name,self.sex,    self.hp,self.attack))

    @classmethod
    def where_was_i born(cls):
        print("我在{}出生".format(cls.born_position))
# angila = Hero("安琪拉","女",1000,200)
# chengyaojin = Hero("程咬金","男",8000,666)
    
    @staticmethod
    def haha():
        print("哈哈哈")

Hero.where_was_i born()
Hero.haha()
 4.3.2.4 静态方法

特点
如果想在类中封装一个方法,既不需要访问实例属性和类属性,也不需要访问实例方法和类方法这个时候,就可以把这个方法封装成一个静态方法
语法

@staticmethod
def 静态方法名():
    pass


静态方法需要用装饰器 @staticmethod 来标识,告诉python解释器这是一个静态方法
调用
类名.静态方法名()

小结

  • 实例方法,方法内部需访问 se1f.属性名 的实例属性, 也可以访问 类名.属性 的类属性
  • 类方法,方法内部只需要访问类属性
  • 静态方法,方法内部不需要访问任何属性

 

标签:info,进阶,Python,self,语法,函数,print,def,name
From: https://blog.csdn.net/m0_67329659/article/details/142382637

相关文章

  • Hive企业级调优[7]——HQL语法优化之小文件合并
    目录HQL语法优化之小文件合并 优化说明 Map端输入文件合并Reduce端输出文件合并优化案例HQL语法优化之小文件合并 优化说明小文件合并优化主要分为两个方面:Map端输入的小文件合并以及Reduce端输出的小文件合并。 Map端输入文件合并合并Map端输入的小文件意味着......
  • C语言进阶【5】---数据在内存中的存储【2】(小数存储很难吗?)
    本章概述本章引要练习浮点数的存储浮点数的取出小补充题目解析彩蛋时刻!!!本章引要常见的浮点数:3.1415,1E10等。其中,1E10是科学计数法的形式,它也就等于1*10^10。小数数据类型:float,double,longdouble。练习在开讲本章内容前,大家先来看个代码,大家先猜一下结果:#de......
  • python如何操作mysql
    首先要通过pipinstallpymysql安装一个pymysql模块直接上代码:importpymysql#连接数据库conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',db='test')#创建游标cursor=conn.cursor()#创建一张表#sql="createtablemy......
  • python-爬虫入门
    前言:由于个人负责的运维组,其中有个同事每回在某个项目发版更新后,需手动在k8s容器平台web界面上复制出几百个微服务的名称以及镜像版本等信息,用来更新微服务清单,个人决定抽时间写个爬虫脚本自动完成手动执行的任务。由于公司信息需保密,这里介绍个简单入门的爬虫脚本做为范例。Pyth......
  • 强化学习基础:主要算法框架与Python实现示例
    创作不易,您的打赏、关注、点赞、收藏和转发是我坚持下去的动力!强化学习(ReinforcementLearning,RL)是一种通过与环境交互来学习策略的机器学习方法。RL主要包含以下几个关键组件:状态(State)、动作(Action)、奖励(Reward)、策略(Policy)和价值函数(ValueFunction)。常见的强化学习主流......
  • Python语言的基本要素
    1.Python的语句(1)程序语句中,所有的字符都必须是英文字符(半角),不能是中文字符(全角)。(2)"#"后是注释,注释的内容不执行。("ctr+/"可加多行注释)2.常量(1)常量表示固定不变的数据(值)(2)常见常量有:数值型(整数)、字符串、布尔型(true表示真、false表示假)、空(None表示啥也不是)3.变量(1)变量是......
  • 书生大模型实战(从入门到进阶)L0-Python
    目录Python实现WordCountVscode连接InternStudiodebugdebug单个python文件在vscode使用命令行进行debug本文是对书生大模型L0-Python部分的学习和实现,学习地址如下:学习地址:‬​​​​⁠​​‌⁠‍⁠​‬​​​​​​​⁠‬​​​⁠​​‌​​​​​‍​​​⁠​​​学......
  • 【python】石头剪刀布,模拟十次并统计获胜次数
    解决问题下面是一个使用Python编写的剪刀、石头、布游戏的程序,包含玩家与计算机对战和模拟计算机对战10次的功能。importrandomdefget_computer_choice():  returnrandom.randint(0,2)defget_user_choice():  choice=input("请输入剪刀(0)、石头(1)、布(......
  • Python中的同一运算符与整数缓存问题
    在Python中,is运算符与==运算符的使用常常引发混淆。特别是在处理小整数时,Python会进行整数缓存,以提高性能。本文将深入探讨同一运算符(is)与相等运算符(==)的区别,并详细阐述整数缓存的问题,通过具体的代码示例和运行结果来帮助理解。1.同一运算符与相等运算符is运算符:判断两个对象是否......
  • python函数一:函数的概念、函数定义与调用、函数的参数、函数的返回值、说明文档以及函
    文章目录1.函数介绍1.1函数的概念1.2函数定义与调用1.2函数的参数1.3函数的返回值1.4说明文档2.函数的嵌套调用2.1嵌套调用及执行流程2.2嵌套调用的应用1.函数介绍1.1函数的概念什么是函数?函数:是一个被命名的、独立的、完成特定功能的代码段,其可能......