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
loliordie
V2EX  ›  Python

在定义某些非常常用的小函数的时, 你们是把这些函数放到一个文件内还是一大堆文件内?

  •  
  •   loliordie · 2020-12-29 08:52:31 +08:00 · 2837 次点击
    这是一个创建于 1454 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我需要定义一些 s3 常用的操作函数, 其他模块高度依赖这些函数, 我会把它封装成一个类放到某个文件内, 这样的函数和类在开发过程中非常多, 我观察了下我接触过的项目, 大致分为这两种派系.

    1. 放到一个文件内

    创建一个文件比如tasks.py, 好处是需要什么函数直接 import 就行了, 缺点是这个文件非常大, 超过了 5000 行, import 很容易 import 半天

    1. 放到某个文件内

    创建一个tasks文件夹, 比如我定义了一个 s3 操作类, 就创建一个s3_operation.py放到这个文件夹内.

    缺点是不太容易定位, 搜索某个函数需要整个目录搜索, 对于开发不太友好.

    10 条回复    2020-12-29 19:28:58 +08:00
    abersheeran
        1
    abersheeran  
       2020-12-29 09:14:31 +08:00
    第一种第二种都可。现代编辑器的搜索功能,单文件内和整个文件夹内都是一样好用、快速的。
    whileFalse
        2
    whileFalse  
       2020-12-29 09:22:31 +08:00
    先放到一个文件里。如果日后觉得这个文件太长 就重构掉。
    kiracyan
        3
    kiracyan  
       2020-12-29 09:27:22 +08:00
    放文件夹就按功能分类
    annielong
        4
    annielong  
       2020-12-29 11:15:02 +08:00
    少了一个文件,多了按功能分文件夹
    lalawac
        5
    lalawac  
       2020-12-29 11:40:52 +08:00
    Snippets 你这的拥有
    xzysaber
        6
    xzysaber  
       2020-12-29 12:44:57 +08:00
    “超过了 5000 行, import 很容易 import 半天”,只针对这句话。
    5000 行就很慢了吗(虽然太长确实不好)?
    peewee 7000 多行也很快啊,而且只会 import 一次。
    loliordie
        7
    loliordie  
    OP
       2020-12-29 15:06:17 +08:00 via Android
    @xzysaber 整个文件因为涉及的类多 在 import 这个文件时会把依赖都 import 一遍 尤其在涉及某些机器学习和计算类的库时 很容易导致 import 半天然后丢出一大堆 warning 的情况 尤其是在开发习惯不好时更容易出这个问题 自己用还好 在自动化部署时很浪费资源
    xuanbg
        8
    xuanbg  
       2020-12-29 15:27:54 +08:00
    按功能分类,每类一个文件。譬如加解密一个文件,json 一个文件,杂七杂八的一个文件
    no1xsyzy
        9
    no1xsyzy  
       2020-12-29 15:50:06 +08:00
    @loliordie 在函数内 import
    secondwtq
        10
    secondwtq  
       2020-12-29 19:28:58 +08:00
    你好,我写 JavaScript 的,每一个函数都会单独做成一个 npm 包
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   888 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:16 · PVG 06:16 · LAX 14:16 · JFK 17:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.