python语法精讲和面向对象核心

字符串

  1. 字符串不能修改
  2. 内置函数 len()
  3. 字符串的拼接:*, +
  4. In

转义符

  • \n:换行符,表示在字符串中创建一个新行。
  • \t:制表符,表示在字符串中插入一个水平制表符(Tab)。
  • \b:退格字符,b代表backspace,可以把一个退格符看成一个backspace键。
  • \用于转义
    • \":双引号,用于在字符串中包含双引号字符。
    • \':单引号,用于在字符串中包含单引号字符。
    • \\:反斜杠,用于在字符串中包含反斜杠字符本身。
  • r'':原生字符串
# yuan alex!
s = "yuan alex!"
print(s)

# yuan    alex!
s = "yuan\talex!"
print(s)

# yuan
# alex!
s = "yuan\nalex!"
print(s)

#yuan ale!
s = "yuan alex\b!"
print(s)

# D:\Program Files
# ancy    ablack\Python 3.8\python.exe
s1 = 'D:\Program Files\nancy\table\back\Python 3.8\python.exe'
print(s1)

# D:\Program Files\nancy\table\back\Python 3.8\python.exe
s1 = 'D:\\Program Files\\nancy\\table\\back\\Python 3.8\\python.exe'
print(s1)

D:\Program Files\nancy\table\back\Python 3.8\python.exe
s1 = r'D:\Program Files\nancy\table\back\Python 3.8\python.exe'  # raw-string
print(s1)

格式化输出

  • %s
#     员工信息:
#    姓名:yuan
#     年龄:18
#     身高: 185.21
name = "yuan"
age = 18
height = 185.21

s = """
     员工信息:
     姓名:%s
     年龄:%d
     身高: %f
""" % (name, age, height)
print(s)
  • f-str
name = "yuan"
age = 18
height = 185.123456

s = f"姓名:{name},年龄:{age},身高:{height}"
print(s)

# 宽度与精度
s = f"姓名:{name:15},年龄:{age:20},身高:{height:20.5}"
print(s)

# 填充与对齐
s = f"姓名:{name:-^15},年龄:{age:*<20},身高:{height:&>20.5} "
print(s)

# 打印结果
# 姓名:yuan,年龄:18,身高:185.123456 
# 姓名:yuan           ,年龄:                  18,身高:              185.12
# 姓名:-----yuan------,年龄:18******************,身高:&&&&&&&&&&&&&&185.12 

# 第一行结果中不同的数据类型的默认对齐方式不同

字符串的序列操作

  • 正负索引
    在这里插入图片描述

索引

s = "hello yuan"

print(s[0])
# h

print(s[-1])
# n

切片

  • 字符串对象[开始索引:结束索引]
  • 字符串对象[开始索引:结束索引:步长(step)default=1]
s = "hello yuan"

# 左闭右开
print(s[0:5])  
# hello

# 缺省
print(s[6:])  
# yuan
print(s[:5])
# hello
print(s[:])
# hello yuan

print(s[-4:-1])
yua

# 步长step
s = "hello yuan"
print(s[::1])  # step=1: 从左向右一个个取
# 常用于字符串反转
print(s[::-1])  # step=-1: 从右向左一个个取;
print(s[::2])
print(s[::3])

# hello yuan
# nauy olleh
# hloya
# hlyn

面向对象

  • 类和实例化的类对象都存在内存中,拥有自己的地址。其中类对象地址中有指针指向所在类地址。
  • 对象变量(属性或方法)的查找顺序:先从自己的空间找;找不到沿着指针去对象所在类中找。

实例方法

  • 实例方法:写在类中,由实例对象调用的方法。

self 是 实例对象

  • 实例对象.变量 查找过程:内存空间:[实例空间、类空间、父类空间]
  • python面向对象中,函数名==变量名。因此,实例属性名称不能与类方法重复,否则发生覆盖。

__init__

  • 魔法方法(双下划线方法),区别于实例方法。它与实例方法的区别在于,它并不是由对象调用的,而是通过事件触发时自动执行的。
  • 类的实例化步骤(解释器工作)
    1. 开辟实例空间
    2. 调用__init__方法
    3. 将实例空间地址作为类的实例化返回值(赋值给指定变量)

PYTHON一切皆对象

  • 只要在内存中开辟一块空间,有一个变量指向这个空间。那么,这个变量就是一个对象。
  • 字符串、字典、列表、自定义的类都是对象。
  • 任何实例对象的类型都是类本身类型。
class Dog:
	pass

Alex = Dog()
print(type(Alex)) # 为Dog类
  • 自定义类型对象属于可变数据类型
    • python中,只有列表和字典是可变数据类型;其他都是不可变数据类型
  • 实例对象也是一等公民
    • 变量传递
    • 作为函数参数
    • 作为函数返回值
class Dog:
	pass

Alex = Dog()

# 变量传递
a = Alex # a指向Alex所指向的内存

类对象、类属性、类方法

  • 类对象:直接调用空间存储的属性和方法
class Car(object):
	# 类属性
	total_cars = 0

	def __init__(self, age, name):
		self.age = age
		self.name = name
		# 类对象调用类属性
		# Car.total_cars += 1
		self.__class__.total_cars += 1

	# 实例方法:参数self
	def accelerate():
		pass
	# 理论上可以通过类对象调用:car1 = Car("3", "Honda");Car.accelerate(car1)
	
	# 类方法:参数cls
	@classmethod # 语法糖:装饰器
	def show _total_cars(cls) # cls : 当前类
		return cls.total_cars

	# 静态方法:参数随意,不能使用类或实例中的任意属性和方法。类和实例都可以调用。
	@staticmethod
	def drinkWater():
		pass
	
# 类对象调用类属性
print(Car.total_cars)
# 类对象通过类方法的封装,调用类属性
Car.show_total_cars()

# 实例对象调用实例方法
car1 = Car("3", "Honda")
car1.accelerate()

# 静态方法
car1.drinkWater()
Car.drinkWater()

类中方法类型总结

- 实例方法(占比80%)
- 类方法(占比15%):展示、修改类属性
- 静态方法(占比5%):属于类,但不使用类的任何资源
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值