目录:

1、不一样的列表

2、改变type中的规则,创建类:类属性大写

3、%s字串格式化,不用元组用字典

4、没有参数抛出异常

5、字符串签名加f 格式化字符串

6、attr库

7、python的十大装B操作


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 

7、python的十大装B操作

https://blog.csdn.net/xufive/article/details/102856921

  

你没见过的python语法的更多相关文章

  1. 初试Python语法小试牛刀之冒泡排序

    Python很火,心里很慌,没吃过猪肉,也要见见猪走路. 看了几天Python的语法,大概初步了解了一点点,https://www.liaoxuefeng.com/wiki/0014316089557 ...

  2. python语法入门之流程控制

    python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...

  3. 深入理解python(一)python语法总结:基础知识和对python中对象的理解

    用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...

  4. 4、Python语法之变量

    一 引入 我们学习Python语言是为了控制计算机.让计算机能够像人一样去工作,所以在Python这门语言中,所有语法存在的意义都是为了让计算机具备人的某一项技能,这句话是我们理解后续所有Python ...

  5. python语法元素的名称

    变量 什么是变量? """ 变量是保存和表示数据值的一种语法元素,在程序中十分常见.顾名思义,变量的值是可以改变的,能够通过赋值(使用等号"=")方式 ...

  6. python语法:注释

    Python语法:注释  python语言中的注释是来帮助程序员理解并读懂代码内容的文字.当然,注释不仅在python语言中是这个作用,在其他语言中也几乎一样. python注释的生成方式  所有演示 ...

  7. Python基础部分:5、 python语法之变量与常量

    目录 python语法之变量与常量 一.什么是变量与常量 1.什么是变量 2.什么是常量 二.变量的基本使用 1.代码中如何记录事物状态 2.变量使用的语法结构与底层原理 3.变量名的命名规范 4.变 ...

  8. 对 Python 语法不够了解导致的 bug

    对 Python 语法不够了解导致的 bug. `in` '20' in '11264,6144,4096,3072,2048,1024,300,30' Out[7]: True a_list = ' ...

  9. python 笔记2:python语法基础

    python语法学习笔记: 1 输入输出 input(),print(). name = input('input your name : ')print('hello ,'+name)print(& ...

随机推荐

  1. redhat6.8服务器版本 yum 源的配置

    阿里云的源地址: http://mirrors.aliyun.com/ 打开后点击帮助: 有如下提示: 不过不能直接使用这个源,因为自己使用的是服务器版本,要修改一个变量,先将源文件下载下来. wge ...

  2. 2015 Multi-University Training Contest 5 1009 MZL's Border

    MZL's Border Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5351 Mean: 给出一个类似斐波那契数列的字符串序列 ...

  3. C++ 运算符重载一(二元运算符重载)

    //二元运算符重载 #include<iostream> using namespace std; class Point { public: Point(int x,int y){ th ...

  4. 面向对象方法的重载(overloading)和覆盖(overriding)

    面向对象方法的重载(overloading)和覆盖(overriding). 在有些JAVA书籍中将overriding称为重载,overloading称为过载. Overloading在一个类中可以 ...

  5. LandMVC HttpHandler web.config配置

    <system.webServer> <validation validateIntegratedModeConfiguration="false" /> ...

  6. JavaScript的parseint()函数

    定义和用法 parseInt() 函数可解析一个字符串,并返回一个整数. 语法 parseInt(string, radix) 参数 描述 string 必选项.要转换为数字的字符串. radix 可 ...

  7. Oracle 10g 数据库手动创建步骤

    Oracle 数据库手动创建步骤 编写初始化参数文件 设置操作系统环境变量 创建实例 以管理员身份连接数据库 启动实例 create database 创建数据库 运行数据字典脚本 Oracle的网络 ...

  8. Oracle数据库列出所有表名SQL语句

    select table_name from user_tables

  9. 关于Win7 x64下过TP保护(应用层)(转)

    非常感谢大家那么支持我上一篇教程.Win10 快出了,所以我打算尽快把应用层的部分说完. 调试对象:DXF调试工具:CE.OD.PCHunter.Windbg调试先言:TP的应用层保护做得比较多,包括 ...

  10. awk sed grep 详解

    Linux的文本处理工具浅谈 awk [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列 ...