Python 的字符串拼接 join、format 源码理解,有大佬给我讲一下吗?小白刚入门,不知道怎么看源码,有大佬告知一下怎么看源码之类的,万分感谢。
1
lhx2008 2018-07-23 22:30:59 +08:00 via Android 1
百度一下很难吗,我都不想说谷歌了
|
2
lhx2008 2018-07-23 22:39:16 +08:00
|
3
whoami9894 2018-07-23 22:44:11 +08:00 via Android
放心吧,不会有人给你讲的
|
4
copie 2018-07-23 23:40:23 +08:00 via Android 8
join 是首先遍历 list 中的每一个字符串确定 maxchar 通过 maxchar 和所有字符串的长度和 sz 通过 PyUnicode(sz,maxchar) 创建新的字符串对象 然后通过每一个字符串的长度和偏移将 list 字符串快速拷贝到新串中。
format 其实是先通过 FORMAT_VALUE 将其他类型转换为 str 类型并且把 str 压入栈。然后进行 join join 和 format 两个都落实到 _PyUnicode_JoinArray()这个函数上去了。 比如 f"{100},200,{300}"等同与''.join(['100',',200,','300']) 说到效率问题因为 join 只能连接字符串而且 FORMAT_VALUE 这个字节码他的具体计算会落实到 Python 实现所以转化的效率不高。 也就是说 join 和 format 的效率区别在于 format 需要将其他类型转化成为 str 而且这个转化过程还是 Python 实现的而 join 只针对与 str. |
5
xiexingjia 2018-07-24 00:22:02 +08:00
觉得楼主想问的是 join format 怎样用
找本书去看 |
6
matrix273 2018-07-24 00:43:06 +08:00 via Android
多练习几个语句就好了,又不会怀孕。
|
7
C90 2018-07-24 09:28:53 +08:00
上来就造原子弹?
|
8
wizardoz 2018-07-24 09:39:52 +08:00
我一直认为看 python 源码对于学 python 没啥用,这是我不看源码的理由
|