V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
weiqk
V2EX  ›  Python

这几天被 Python 搞得快崩溃了

  •  
  •   weiqk · 106 天前 · 18249 次点击
    这是一个创建于 106 天前的主题,其中的信息可能已经有所发展或是发生改变。
    主要是语法问题,缩进极不习惯,美观和可读性并没觉得提高,结尾也没有分号
    结束似乎也没标记,不如类 c 语言方便


    立贴起誓,新项目我再用 python 我是猪
    180 条回复    2024-09-25 09:33:04 +08:00
    1  2  
    DOLLOR
        101
    DOLLOR  
       106 天前   ❤️ 4
    @ytmsdy
    其实 python 有个容易忽略的点,虽然不用写大括号“{}”了,但还需要写冒号“:”。而且这个冒号在标准美式键盘上也是要 shift 组合才能输入的。所以 python 的缩进语句块,似乎并不比其他大括号语句块节约按键数。


    @15855pm
    多一个、少一个大括号属于语法问题,编辑器能立马报错,解决问题。
    反观多一个、少一个缩进,这代码可能还是符合语法的,不容易发现,这才是灾难吧。
    miaotaizi
        102
    miaotaizi  
       106 天前
    @wxf666 小项目用用就行啦, 动态字段写多了, 你维护个 三五年的项目试试看呢, 怕不是都不记得当初是怎么个动态的了
    miaotaizi
        103
    miaotaizi  
       106 天前
    @nno 有多少人改了代码回去改注释呢, 就这点而言我就觉得 java 天下第一
    imkerberos
        104
    imkerberos  
       106 天前
    py 很美很暴力, 你忍一下.
    shuqin2333
        105
    shuqin2333  
       106 天前   ❤️ 1
    你用 py 不买游标卡尺的吗
    justdoit123
        106
    justdoit123  
       106 天前   ❤️ 1
    缩进语法,真的巨难用。T_T
    toyuanx
        107
    toyuanx  
       106 天前
    我平时主要用 go ,然后刷题想用 python ,结果好多函数记不住,sad
    nzbstn
        108
    nzbstn  
       106 天前
    @ytmsdy #10 个人是觉得 python 还算挺简洁的, 可能是用 python 用惯了, 前阵子想学学 go, 但还是忘不了 python 的语法, 至于 java ,算是我最讨厌的语法吧, 但是好像很多大型项目用的都是 java, 一些工具甚至也是 jar
    moudy
        109
    moudy  
       106 天前
    @yb2313 #6 u1s1 python api 的接口文档相比 java c cpp 严谨性差太多了。
    moudy
        110
    moudy  
       106 天前
    @cbythe434 #44 php 那一堆$才是 perl 遗毒啊
    moudy
        111
    moudy  
       106 天前
    @thorneLiu #39 现代 python typing 已经不错了。但是很多人不爱用
    moudy
        112
    moudy  
       106 天前
    @UN2758 #41 多层 if else 嵌套时外层的 else 确实很蛋疼,一眼看不清楚这个 else 对的是哪个 if
    UN2758
        113
    UN2758  
       106 天前
    @moudy #112 额,IDE 有提示啊
    YVAN7123
        114
    YVAN7123  
       106 天前
    只是语言的习惯不同而已, 没有必要上升到不用把?
    moudy
        115
    moudy  
       106 天前
    @UN2758 #113 这种提示也就修补了一点点。做网络 protocol 解析时(比如 scapy 插件)经常会搞出 if 下面很大一块处理代码,然后嵌套 if 。深层 if 有的带 else ,有的不带。还需要上下查看有没有漏判断的 field 。还有的时候要搬动逻辑到别的 if 下去。识别及修复缩进在这里真的是麻烦。
    moudy
        116
    moudy  
       106 天前
    @qq78660651 #43 python 在这种大军团作战的协调性 feature 上很软。哪怕团队协商好了,外来的库也会给你们添乱。
    lambdaq
        117
    lambdaq  
       106 天前
    @xz410236056 @june4 @ytmsdy @weiqk

    特大好消息,python 支持在结尾写分号了。最早支持的版本是。。。让我看看。。。。1991 年发布的 0.9.0 版!!

    那么问题来了,LZ 用的 py 是 Guido 当年写的 0.8.0 内测版吗?
    YUyu101
        118
    YUyu101  
       105 天前
    我只是简单用用 python ,所以没深度去学,目前体验难用的点主要是两点。

    1 缩进导致的在原代码上增加 if else 或 for 之类的注释某段代码后必须先手动缩进才能运行,没有{}导致格式化程序也不能擅自帮你缩进。
    而我一般都是先运行能跑通后再格式化,这一点比较蛋疼。

    2 取属性有三种方式 [] . getattr ,还会抛异常
    这个我感觉脚本语言不应该区分那么多访问方式,那些编译语言因为要零成本抽象,所以符号要明确代表偏移地址,指针等操作,但脚本语言完全可以不需要这些,像 lua 和 js 就很好。

    这只是吐槽,很多库只有 python 有我也只能去用,只是会把该库相关的操作做成独立的服务暴露 api 给其他语言去调用,可能深度学过 python 可以缓解以上问题,但没办法我要写的不止 python ,精力有限的情况下,只能去尽量减少可能出错的地方。
    cocogovern
        119
    cocogovern  
       105 天前
    @cmdOptionKana 人家说不定喜欢记事本打开然后调试全部流程跑一遍。
    qq78660651
        120
    qq78660651  
       105 天前
    @moudy #116 毕竟不是强约束的语言,需要自我约束,个人使用就还好。
    Baloneo
        121
    Baloneo  
       105 天前
    第一次见有人吐槽 python 语法...
    leonshaw
        122
    leonshaw  
       105 天前
    别的不说,本站的回复里就没法好好贴 python 代码
    v2luoqg
        123
    v2luoqg  
       105 天前
    第一次接触的时候也是 OP 一样的想法。后来强迫自己适应。
    lux182
        124
    lux182  
       105 天前   ❤️ 1
    你这是捅马蜂窝啊 哈~
    but 个人愚见 python 不适合大型多人项目.语法太灵活
    Hopetree
        125
    Hopetree  
       105 天前
    我也经常吐槽我同事写的 Python ,妈的,直接是在页面写的,不用编辑器的那种,我看到就烦,真的没有经过格式化的代码看都不想看,但是,谁特么写代码不用编辑器呢
    lululau
        126
    lululau  
       105 天前
    语法审美上来说,动态类型语言 Ruby 第一,静态类型语言 Swift/Kotlin 并列第一,我说的!🐶
    qianckjuan
        127
    qianckjuan  
       105 天前
    有咩有一种可能,框框在一个 func 里写一百行代码本身就是很 x 的行为
    应该拆分到几个 func 里,一个 func 里两三个 block 用空行隔开
    arischow
        128
    arischow  
       105 天前 via iPhone
    skill issue
    abc612008
        129
    abc612008  
       105 天前
    @miaotaizi #13 这种东西只有当 wrapper 转发才比较有合理性。一般情况下建议把 type hint 当作强制的然后用 mypy/pyright 做 type check
    mark2025
        130
    mark2025  
       105 天前   ❤️ 2
    @grzhan 没分号可以接受,用缩进代替{}当作一个语法实在是折腾人
    gj759469973
        131
    gj759469973  
       105 天前
    用 vi 写吗
    yolee599
        132
    yolee599  
       105 天前 via Android
    我日常写 C 语言的,还能适应,反正 python 用完就放一边了,不是主力。但是有一点我是觉得真的丑:定义一个函数,中间想要把一部分逻辑放一起,上下就空一行,这段代码看起来就像一个孤岛一样,上面空的,下面空的,左边也是空的
    idlesysman
        133
    idlesysman  
       105 天前
    @weiqk 今天用 T-SQL 写了 300 多行脚本,用 begin 开始 end 结尾,因为业务逻辑原因嵌套了 4 层 if ,编辑器还不会高亮,调试代码可把整吐了
    xiandao7997
        134
    xiandao7997  
       105 天前
    @lululau c#不服🐶
    molika
        135
    molika  
       105 天前 via iPhone
    @miaotaizi 不写装饰器 很难写出这种东西。 我维护了一个 3w 行的 py 项目 从零开始自己写的 翻了下 只有装饰器才出现这种签名的函数。
    y1y1
        136
    y1y1  
       105 天前 via iPhone
    点进来之前还以为你要吐槽啥呢
    iintothewind
        137
    iintothewind  
       105 天前
    python 这种简单易上手的语言, 适合入门,

    但不适合比较复杂的, 多人合作的, 或者有性能要求的项目.

    不知道, 你面对的项目是哪一种.
    guobaiyi
        138
    guobaiyi  
       105 天前
    @thoo61871 go 能写算法吗
    miaotaizi
        139
    miaotaizi  
       105 天前
    @molika
    @abc612008
    所以总结下来 py 适合单兵作战 (实际上也是如此)
    Bingchunmoli
        140
    Bingchunmoli  
       105 天前 via Android
    @treblex 主要是用包之后就会很难受
    4u1kto
        141
    4u1kto  
       105 天前
    @encro https://help.mirrors.cernet.edu.cn/ 好东西啊,谢谢,收藏了
    shellic
        142
    shellic  
       105 天前
    实话实说我也跟楼主一样的感觉
    vialon17
        143
    vialon17  
       105 天前
    每次多写个大括号、分号就很开心吗?
    为啥不能省掉?
    能省掉为啥不用 py ?
    twinsant
        144
    twinsant  
       105 天前
    用过 Pascal C C++ Basic Python JavaScript TypeScript Golang Swift ,目前看过来还是最喜欢 Python 和 Swift
    abc612008
        145
    abc612008  
       105 天前
    @miaotaizi #139 适合非常小项目、一次性脚本、快速迭代的原型之类的。如果是要维护的大项目我会用静态类型语言
    ochatokori
        146
    ochatokori  
       105 天前 via Android
    那来 nodejs 吧,py 能干的 nodejs 都能干
    kenvix
        147
    kenvix  
       105 天前 via Android
    Python 就是一坨狗屎,但是我 AI 又都喜欢用,搞得我也不得不吃
    lingeo
        148
    lingeo  
       105 天前
    顶级串子,正话反说。🤓
    janus77
        149
    janus77  
       105 天前
    这种无意义纯水贴发多了只会提高你账号被 ban 的几率。。。1
    miaotaizi
        150
    miaotaizi  
       105 天前
    @abc612008 共勉
    XM3vbQJI4AYsh54O
        151
    XM3vbQJI4AYsh54O  
       105 天前
    不适应可能是你平常代码格式本身就规范,python 的缩进其实是一种很明确的层级排列,看起来远比大括号来的直观,即便你习惯大括号这种,难道你不用缩进进行层级排列吗
    OvO88
        152
    OvO88  
       105 天前
    你是在用 windows 记事本写代码吗
    nmzcbkof
        153
    nmzcbkof  
       105 天前 via iPhone
    我刚开始也这样想,现在真香
    LaurelHarmon
        154
    LaurelHarmon  
       105 天前
    缩进真是个伟大的发明
    ipwx
        155
    ipwx  
       105 天前
    @zhouyin 比起速度,快速研究新的 idea 、以跟上市场更重要。

    能跟上市场的,一天交易一次都能翻几十倍。

    不能跟上市场的,一秒交易一百次都会亏光。
    BlackSiao
        156
    BlackSiao  
       105 天前
    这才哪到哪啊,我大学刚进来的先学的 C ,后面 gpt 火了用 python 写过一段时间的大语言模型应用,只能说 python 太方便了
    bczhc
        157
    bczhc  
       105 天前 via Android
    py 我也接受不了缩进,一直不用。除了业余 ai (比如 ocr 啥的)小脚本不得不写一下。日常脚本语言我选择 ruby 和 kotlin
    snitfk
        158
    snitfk  
       104 天前
    看来 OP 是用写字板写代码的大神啊。sublime 和 vim 之类的也都有类似功能。
    rocknio28
        159
    rocknio28  
       104 天前
    真有因为缩进,分好,error 就抛弃一门语言的?
    yaorc
        160
    yaorc  
       104 天前
    pycharm ,以下快捷键非常好用( Windows )

    代码格式化:Ctrl + Alt + L
    删除当前行:Ctrl + Y
    复制当前行:Ctrl + D
    添加 try-catch: Ctrl + Alt + T
    ...
    RudyS
        161
    RudyS  
       104 天前
    对公司来所员工只是工具,对程序员来说语言只是工具。
    Bert88
        162
    Bert88  
       104 天前
    我不允许你这么说 Python 👺
    beginor
        163
    beginor  
       104 天前 via Android
    我 ts/c# 用得多, 觉得 Python 有两个不爽的地方:

    1. 变量不用预先声明, 经常会出现不知道变量开始出现的;
    2. lambda 表达式只能一行,不能多行;

    另外,其实 Python 的行尾可以加分号的,虽然大家基本上都不写分号,如果需要的话也可以强制加分号。
    allenjuly7
        164
    allenjuly7  
       104 天前
    说不习惯缩进的兄弟们,bython 了解一下 😎
    https://github.com/mathialo/bython
    starlion
        165
    starlion  
       104 天前
    你要写个 AI 相关项目,还得 python
    Maerd
        166
    Maerd  
       104 天前
    你让我怀疑你是在用记事本编程
    mayli
        167
    mayli  
       104 天前
    @beginor
    需要预先声明吧,至少是执行顺序上
    lambda 本身就不是让你多行,多行请 def
    asdfsadfsdf
        168
    asdfsadfsdf  
       104 天前
    绝了 一门语言也能有教徒

    python 成了不可玷污的存在
    landerwong99
        169
    landerwong99  
       104 天前
    @elevioux #35 有时候看别人的代码心智负担还是挺大的,一堆语法糖+kwarg ,一脸懵逼
    424778940
        170
    424778940  
       104 天前
    缩进来决定作用域就是邪教 你说{}麻烦, 现代 ide 也是直接给你处理了, 你说缩进省事, 等你贴一个没缩进的代码段进来就知道了
    还有说找大括号匹配是灾难的, 找缩进就不是吗? 少一个空格逻辑完全就变了, 退一步说, py 省去了大括号, 小括号有变化吗? 不还是要找配对, 本质上没有什么区别, 不差这一个
    py 最让人讨厌的还是类型不够强, 尤其是碰到一些脑瘫库 看文档说给我丢一个 obj 出来, 或者 var 出来, 谁知道是 tm 啥玩意啊到底, 最后还是要跑去看代码里写的到底是什么, 在碰上这类型是继承了其他类型各种套娃, 血压就上去了
    还有就是一些场景要用无符号的, py 只有 int 没有 uint, 要么用 c 类型要么用按位处理的库, 麻烦的要死, 这部分尤其在对一些上位机下位机通讯的地方非常蛋疼
    lonelyparasol
        171
    lonelyparasol  
       104 天前
    @thoo61871 golang 日常使用和就业怎么样, python 有点大众化, 都算不上特长了
    james122333
        172
    james122333  
       103 天前 via Android
    个人不写 python 但对缩进最友好的编辑器就是 vi/vim/nvim 缩进毫无压力
    weiqk
        173
    weiqk  
    OP
       103 天前
    @zhouyin
    >>>量化交易那么要求高速度的软件 竟然能用 python 这种慢速度??

    我大 A 三秒一个 tick ,期货 0.5 秒一个 tick ,语言不是关键,交易策略才是关键
    james122333
        174
    james122333  
       103 天前 via Android
    @moudy

    我更喜欢$区隔变量与函数
    mark2025
        175
    mark2025  
       103 天前
    @moudy python typing 不如直接 TypeScript 吧
    zhouyin
        176
    zhouyin  
       103 天前 via Android
    @weiqk
    可以自己搞量化 不需要资质?
    weiqk
        177
    weiqk  
    OP
       103 天前
    @zhouyin 股票交易接口还没大面积铺开,但只要足够有钱证券公司会很乐意给你开接口,期货的接口已经铺开
    只要你不卖你写的交易程序就没问题,能挣钱的交易程序谁卖啊
    jqtmviyu
        178
    jqtmviyu  
       103 天前   ❤️ 1
    @treblex #18 uv 可以配置源, `export UV_INDEX_URL="http://mirrors.aliyun.com/pypi/simple"`
    jqtmviyu
        179
    jqtmviyu  
       103 天前
    新手最不爽的真是缩进, 无比怀念花括号.
    其次是包管理器, js 几乎 就 npm / pnpm 两种, python 的五花八门, 甚至还不通用, 有的项目也不提供 requirements.txt
    rm0gang0rf
        180
    rm0gang0rf  
       92 天前
    习惯是个很可怕的事情, 你说不习惯 会有习惯的人说你是猪
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5447 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:44 · PVG 16:44 · LAX 00:44 · JFK 03:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.