你没见过的python语法
目录:
1、不一样的列表
2、改变type中的规则,创建类:类属性大写
3、%s字串格式化,不用元组用字典
4、没有参数抛出异常
5、字符串签名加f 格式化字符串
6、attr库
1、不一样的列表
list1 = ["a", "b", "c"]
self, *args = list1
print(self)
print(args)
输出:
a
['b', 'c']
2、改变type中的规则,创建类:类属性大写
class UpperAttrMetaClass(type):
def __new__(cls, class_name, class_parents, class_attrs):
# 遍历属性字典,把不是__开头的属性名字变为大写
newAttr = {}
for k, v in class_attrs.items():
if not k.startswith("__"):
newAttr[k.upper()] = v # 方法1:通过‘type’来创建类对象
# return type(class_name, class_parents, newAttr) # 方法2:复用type.__new__方法创建类对象
# return type.__new__(cls, class_name, class_parents, newAttr) # 方法3:使用super方法创建类对象
return super(UpperAttrMetaClass, cls).__new__(cls, class_name, class_parents, newAttr) # python3的用法
class Foo(object, metaclass=UpperAttrMetaClass):
bar = "bip" # 判断Foo类中是否有某个属性
print(hasattr(Foo, 'bar'))
print(hasattr(Foo, "BAR")) f = Foo()
print(f.BAR)
输出:
False
True
bip
3、%s字串格式化,不用元组用字典
str= """
第一个:%(delim)s
第二个:%(id)s
"""
str_new = str % {'delim': "$", 'id': 9}
print(str_new)
输出:
第一个:$
第二个:9
4、没有参数抛出异常
def func1(*args, **kwargs):
if not args: # 无参数报错
raise TypeError("descriptor 'format' of 'Formatter' object needs an argument")
else:
n_args = len(args)
pattern = " ".join("%s," for x in range(n_args))
# print(pattern)
return "I am func1, my args is: " + pattern % args if __name__ == '__main__':
# 有参数正常
res1 = func1("a1", "a2", "a3")
print(res1) # 无参数报错
res2 = func1()
print(res2)
输出:
I am func1, my args is: a1, a2, a3, Traceback (most recent call last):
File "D:/aaa-py/tmp/my00-tool.py", line 17, in <module>
res2 = func1()
File "D:/aaa-py/tmp/my00-tool.py", line 3, in func1
raise TypeError("descriptor 'format' of 'Formatter' object needs an argument")
TypeError: descriptor 'format' of 'Formatter' object needs an argument
5、字符串签名加f 格式化字符串
例子:
https://blog.csdn.net/sunxb10/article/details/81036693
6、attr库
https://www.attrs.org/en/latest/glossary.html
https://blog.csdn.net/xufive/article/details/102856921
你没见过的python语法的更多相关文章
- 初试Python语法小试牛刀之冒泡排序
Python很火,心里很慌,没吃过猪肉,也要见见猪走路. 看了几天Python的语法,大概初步了解了一点点,https://www.liaoxuefeng.com/wiki/0014316089557 ...
- python语法入门之流程控制
python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...
- 深入理解python(一)python语法总结:基础知识和对python中对象的理解
用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...
- 4、Python语法之变量
一 引入 我们学习Python语言是为了控制计算机.让计算机能够像人一样去工作,所以在Python这门语言中,所有语法存在的意义都是为了让计算机具备人的某一项技能,这句话是我们理解后续所有Python ...
- python语法元素的名称
变量 什么是变量? """ 变量是保存和表示数据值的一种语法元素,在程序中十分常见.顾名思义,变量的值是可以改变的,能够通过赋值(使用等号"=")方式 ...
- python语法:注释
Python语法:注释 python语言中的注释是来帮助程序员理解并读懂代码内容的文字.当然,注释不仅在python语言中是这个作用,在其他语言中也几乎一样. python注释的生成方式 所有演示 ...
- Python基础部分:5、 python语法之变量与常量
目录 python语法之变量与常量 一.什么是变量与常量 1.什么是变量 2.什么是常量 二.变量的基本使用 1.代码中如何记录事物状态 2.变量使用的语法结构与底层原理 3.变量名的命名规范 4.变 ...
- 对 Python 语法不够了解导致的 bug
对 Python 语法不够了解导致的 bug. `in` '20' in '11264,6144,4096,3072,2048,1024,300,30' Out[7]: True a_list = ' ...
- python 笔记2:python语法基础
python语法学习笔记: 1 输入输出 input(),print(). name = input('input your name : ')print('hello ,'+name)print(& ...
随机推荐
- Netty4.x中文教程系列(七)UDP协议
将近快一年时间没有更新Netty的博客.一方面原因是因为项目进度的问题.另外一方面是博主有一段时间去熟悉Unity3D引擎. 本章节主要记录博主自己Netty的UDP协议使用. 1. 构建UDP服务端 ...
- jquery checkbox选中
楼主写的在1.6之前是没有问题的,jquery 1.6后就要这样写了,<input type='checkbox' id='cb'/> <script> //获取是否选中 va ...
- sudo非交互式输入密码
sudo非交互式输入密码 编辑 删除 我们在使用sudo命令的时候,为了避免交互,可以使用 echo 'password' |sudo -S cmd 这样的方式,通过管道传入密码,就不用手动输入了. ...
- CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
- HTTP Content-Disposition Explanation [ from MDN ]
在常规的HTTP应答中,Content-Disposition 消息头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地. 在multipart ...
- 【BZOJ】1638: [Usaco2007 Mar]Cow Traffic 奶牛交通(dfs+dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1638 一条边(u, v)经过的数量=度0到u的数量×v到n的数量 两次记忆化dfs算出他们即可 #i ...
- ES5与ES6的继承
JavaScript本身是一种神马语言: 提到继承,我们常常会联想到C#.java等面向对象的高级语言(当然还有C++),因为存在类的概念使得这些语言在实际的使用中抽象成为一个对象,即面向对象.Jav ...
- Juicer——a fast template engine
https://blog.csdn.net/yutao_struggle/article/details/79201688 当前最新版本: 0.6.8-stable Juicer 是一个高效.轻量的前 ...
- 移动App如何实践单点登录
移动应用实现单点登录,分析下面两种需求: 需求一: 账号在正在设备A上使用(应用是设备A上当前活动应用), 若设备B上用该账号登录应用,要求设备A上的账号立即退出. 解决办法: 应用客户端上做个定时 ...
- fopen()函数文件模板中w,w+,a,a+的区别
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零.如果文件不存在则尝试创建之. "w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零.如果 ...