课后作业第46讲动手提1
import timeclass Record:
def __init__(self, initval=None, name=None):
self.val = initval
self.name = name
self.filename = "record.txt"
def __get__(self, instance, owner):
with open(self.filename, 'a', encoding='utf-8') as f:
f.write("%s 变量于北京时间 %s 被读取,%s = %s\n" % \
(self.name, time.ctime(), self.name, str(self.val)))
return self.val
def __set__(self, instance, value):
filename = "%s_record.txt" % self.name
with open(self.filename, 'a', encoding='utf-8') as f:
f.write("%s 变量于北京时间 %s 被修改, %s = %s\n" % \
(self.name, time.ctime(), self.name, str(value)))
self.val = value
问题:标红的部分是什么作用,感谢回答 本帖最后由 jackz007 于 2021-11-14 10:17 编辑
filename = "%s_record.txt" % self.name
"%s" 是字符串的格式描述符,% 是连接符,self . name 是对应于格式描述符的参数。作用是把字符串 self . name 的内容填充到字符串中 %s 出现的位置上。
例如,如果 self . name = 'abc',那么 filename = 'abc_record.txt' Python 的三种字符串格式化:
1.)% 格式化
2.).format() 格式化
3.)f-string 格式化
例子:
a = "小白"
b = 87
c = 71.2
d = True
# 字符串格式化:% 方法
print("%s 今年 %d 岁,体重 %.1f 公斤,%r 表示 真。"%(a, b, c, d))
# 字符串格式化:.format() 方法
print("{} 今年 {} 岁,体重 {} 公斤,{} 表示 真。".format(a, b, c, d)) # 第一种,空 {} 默认为顺序 0, 1, 2, 3 ....,如:{0} 今年 {1} 岁,体重 {2} 公斤,{3} 表示 真。
print("{3} 今年 {0} 岁,体重 {2} 公斤,{1} 表示 真。".format(a, b, c, d)) # 也可以自定义乱序
# 字符串格式化:f-string 方法(也就是 Python 最新版本)
print(f"{a} 今年 {b} 岁,体重 {c} 公斤,{d} 表示 真。")输出结果:小白 今年 87 岁,体重 71.2 公斤,True 表示 真。
小白 今年 87 岁,体重 71.2 公斤,True 表示 真。
True 今年 小白 岁,体重 71.2 公斤,87 表示 真。
小白 今年 87 岁,体重 71.2 公斤,True 表示 真。
页:
[1]