包含标签 python3 的文章

Python3动态创建module

最近要支持一个功能,让用户自定义一些动态的逻辑,索性让用户自己写代码执行,所以需要做到让用户的代码动态执行起来。下面列举一下核心逻辑。 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env python3 import importlib def new_module(mod_name): spec = importlib.machinery.ModuleSpec(mod_name,None) return importlib.util.module_from_spec(spec) def create_module(mod_name, object_list): mod = new_module(mod_name) for obj in object_list: setattr(mod,obj.__name__, obj) return mod 这个脚本主要是用来动态创建module,并且把对象放到module中,这样就可以在其他地方调用了。 参考文章 Creating Dynamic Modules in Python 3 ……

阅读全文

Python Language Server 支持Pydantic

步骤 打开pydantic/main.py文件并且搜索ModelMetaclass定义,在ModelMetaclass类型定义,粘贴以下代码: 1 2 3 4 5 6 7 8 def __dataclass_transform__( *, eq_default: bool = True, order_default: bool = False, kw_only_default: bool = False, field_descriptors: Tuple[Union[type, Callable[..., Any]], ...] = (()), ) -> Callable[[_T], _T]: return lambda a: a 增加包装器在ModelMetaclass定义上: 1 @__dataclass_transform__(kw_only_default=True, field_descriptors=(Field, FieldInfo)) 结果 修改前 修改后 参考文献 ……

阅读全文

Python3在类的内部使用当前类作为类型提示

问题 在Python3中,例如:构建链表节点类,会有一个指向自身类型的指针,代码如下: 1 2 3 4 5 class ListNode(object): value: int nextNode: ListNode def merge(self, head: ListNode): pass 如果直接写成这样,代码提示器是无法识别到的 解决 Python 3.10以及以后的版本 已经支持该方式 Python 3.7+ 使用feature 1 from __future__ import annotations Python 3.6以及更旧的版本 直接使用字符串的方式,例如: 1 2 3 4 5 class ListNode(object): value: int nextNode: 'ListNode' def merge(self, head: 'ListNode'): pass 参考资料 https://stackoverflow.com/questions/33533148/how-do-i-type-hint-a-method-with-the-type-of-the-enclosing-class……

阅读全文

Python3 和 Python2的区别

print Python2.7的print不是一个function Python3里的print是一个function。 Unicode Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。 由于 Python3.X 源码文件默认使用utf-8编码,这就使得以下代码是合法的: 1 2 3 4 5 6 7 >>> 中国 = 'china' >>>print(中国) china Python 2.x 1 2 3 4 5 6 7 8 9 10 11 12 13 >>> str = "我爱北京天安门" >>> str '\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8' >>> str = u"我爱北京天安门" >>> str u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8' Python 3.……

阅读全文