首页
学习
活动
专区
圈层
工具
发布

Python 为什么没有 main 函数?为什么我不推荐写 main 函数?

为什么要写那行 if 语句呢?可能的话,应该拆分 main 函数,甚至不必封装成一个函数啊! 我个人总结出以下的经验: 打破惯性思维,写出地道的代码。...因为 Python 的程序执行单位其实是脚本文件,而非某个函数或者类,所以建议把入口文件命名为 main.py,内部的函数按需求而定 可以的话,使用 __main__.py 作为入口文件。...这个文件结合命令行的“-m”参数使用,非常好用。推荐阅读:Python 中 -m 的典型用法、原理解析与发展演变 不推荐写if __name__ == '__main__'。...首先,如果只有一个文件的话,因为不存在导出的可能,不建议写。...小结:本文首先解释了什么是 main 入口函数,以及为什么某些语言会强制要求写 main 函数;接着,解释了为什么 Python 不需要写 main 函数;最后则是针对某些人存在的惯性误区,分享了我个人的四点编程经验

3.4K31

我为什么不建议你使用Python3.7.3?

作者: Lateautumn4lin 来源:云爬虫技术研究笔记 ---- 之前使用Python的环境一直是Python3.7.3的,一直使用的很正常,没有什么毛病,直到最近做一个图片下载器的时候发现了问题...https的去验证SSL证书,不过我这里的问题是使用的是Aiohttp库,并没有Verify这个参数,所以我们并不能使用这个去忽略这个问题。...解决一下 Goole了一下,发现其实不止我一个人出现了这个问题,已经有老哥在Aiohttp的Issue里面提了相关的问题了,可以参考https://github.com/aio-libs/aiohttp...可惜我的环境之前是3.7.3 我们知道了问题的解决办法,我们再去看看为什么会有这个问题?...最后的小建议 最后建议大家能够使用3.7.4的时候尽量不使用3.7.3版本,虽然3.8也可以避免这个问题,但是3.8还是刚推出,BUG问题还是很多的,所以目前这个阶段大家还是尽量使用3.7.4。

2.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么我坚持使用 JavaScript 函数声明

    ; 这个函数表达式体现了 ES 2015 的最大亮点——箭头函数(Arrow function),精简可爱,简直迷死人。第一次看到它时,我的内心戏是:“憋说话,吻我”!...——那么简单的函数竟然要 3 行!那些多余的字符怎么看都扎眼! 如今你们内心戏大概是: ? 我对箭头函数绝对是真爱,但要声明一个顶级函数时,我仍用“土气”的函数声明。 为什么呢?...都退后,我要开始装逼了 Fair warning:接下来我要放大招了——下文“行话”连篇,但你只要明白在声明之前不能使用常数就好。...但是优化代码对我来说就是让其更简单易懂。 3 关于箭头函数 是的,箭头函数是真爱啊。 我一般会用箭头函数来通过一个小函数,将其作为更高阶函数的值。...使用箭头函数时,还会使用地图、过滤器等,它们都是我的好朋友。 举个例子: const goodSingers = singers.filter((singer) => singer.name !

    1.5K80

    为什么我不建议你使用Java序列化

    作为一名Java开发,我为什么建议你在开发中避免使用Java序列化?...JDK 提供的两个输入、输出流对象 ObjectInputStream 和 ObjectOutputStream,它们只能对实现了 Serializable 接口的类的对象进行反序列化和序列化。...实现攻击的原理:Apache Commons Collections允许链式的任意的类函数反射调用,攻击者通过实现了Java序列化协议的端口,把攻击代码上传到服务器上,再由Apache Commons...Protobuf 以一个 .proto 后缀的文件为基础,这个文件描述了字段以及字段类型,通过工具可以生成不同语言的数据结构文件。...Java 默认的序列化虽然实现方便,但却存在安全漏洞、不跨语言以及性能差等缺陷,所以我强烈建议你避免使用 Java 序列化。

    2.4K20

    为什么我不推荐你使用vue-cli创建脚手架?

    最近在知乎看到一个问题,原问题如下: “ 很奇怪,为什么现在能找到自己手动创建vue脚手架的文章非常少,而且大家似乎对webpack4的热情并不高,对于想基于vue2.0+webpack4搭建一个脚手架的我来说资料真是少得可怜...这一点我很疑惑,希望大牛给点指导。”...以上是对于写业务代码的前端一线编码人员来说的,对于追求上进的你当然不满足于一直写业务代码,你也想知道一个项目在破土动工前,前端leader是怎么搭建一个前端项目的工作流的,如何去手动配置一个具体项目的webpack打包文件...可以使用该方式npm install extract-text-webpack-plugin@next解决。...这就是我为什么不推荐你使用vue-cli创建脚手架的原因(此文的受众是想要进阶中级的初级前端人员)。

    2.6K140

    为什么我不推荐另外2种快速传几百G文件的方法!

    引言 我是@程序员小助手 Rman,昨天看到一个题目,说在两台PC之间快速传几百G的文件,有没有什么好的快的办法。 考虑到操作系统平台,有Windows,Linux,MaxOS,这些都有差异。...参看 两台电脑之间如何快速传输几百G的文件?-两台,传输,文件,电脑 ? 这里说说为什么不推荐另外2种。 一个是网络存储。...为什么不推荐,因为pandownload的被举报,开发者收监,百度的名声臭的不可救药。所以不推荐。 国外的网速,你我都是知道的。 还有一个是,软件共享。 有人说这很简单啊,局域网有QQ,不就行了?...回答发出后,有不少网友回复说, “我直接拔下来硬盘,接到新主机上。新主机启动,挂载为新的磁盘,立马可用!” 这个也是经不起推敲的。...很多朋友第一反应,就这么干,是因为默认使用的都是windows的系统。 惯性使然。 写在最后 最快的办法还是物理连接,使用电缆线,网线,硬盘挂载,都比纯软件实现要快的多。

    3.6K10

    52-R茶话会-十二:为什么我不建议你使用 rm(list=ls())

    为什么我不建议你使用 rm(list=ls()) 你可能会经常在脚本中遇到rm(list=ls()),尤其是某些workflow 的内容。 它们的本意确实是好的:希望开启一个新的R。...这也是不建议如此操作的原因。...(这也是不建议使用setwd 的原因) 一些改善的策略: 用R studio 等可以通过project 为单位管理脚本的开发工具,可以很方便的每次在Rproj 文件所在的位置即设定为工作目录,而且可以非常方便的切换到其他的项目...; 避免在脚本中使用rm(list=ls())、setwd(),可以使用rs.restartR() 替代rm(list=ls()); 将重要的对象导出到output 文件夹内,保存为.Rdata,其他脚本中如果需要使用可以直接读取...; 所有的文件输出读取都使用相对路径; 如果是使用R studio 的话,关闭默认保存环境中变量到.Rdata 文件; FYI: prints a reminder about how to do this.usethis

    2.1K20

    使用C语言中的头文件有什么技巧和注意事项吗?为什么不直接包含C文件呢?

    ,最主要的看到这个模块使用的函数列表,同时有些关键函数的功能还会在头文件里面做出说明,通常在项目推进过程中就可以通过头文件调用库里面的函数,从而完成单元测试。...就可以使用printf函数打印东西了,有时候发现不带头文件有些系统函数也能被调用起来,主要C语言比较灵活,这种一般在编译的时候会处警告,搞不影响编译通过,C语言的编译通常来讲比较随意,所以在运行过程中可能出现崩溃现象...使用C语言头文件需要注意事项 头文件的里面主要声明一些函数列表,定义一些宏,还会定义一些核心结构体,还会有一些静态全局变量,头文件中尽量不要使用全局变量,因为全局变量在管理上会显得麻烦很多,增加出现问题的概率...当然在实际的开发过程中头文件设置成什么样子还和编程能力水平有一定的关系,在模块设计过程中讲究的高内聚低耦合,在模块内部使用的函数就不要暴露在头文件中,防止外来的操作对模块的数据造成破坏,所以在设计头文件的时候暴露在外部的函数列表是深思熟虑的...,很多初学者在玩头文件的时候甚至要把所有的函数都搬上去了,显得非常没有层次感,而且只要在头文件声明的函数都要标注上清晰的注释,这样子在别人调用模块函数的时候能够很轻松的知道这个函数的意思。

    2.1K30

    数据科学家常遇到的10个错误

    import pandas as pd df1 = pd.read_csv('file-i-dont-have.csv') # 错误 do_stuff(df) 解决方案:使用d6tpipe共享数据文件...将数据与代码混合 由于数据科学代码需要数据,为什么不将其存储到同一目录?当您使用它时,也可以在其中保存图像,日志和其他垃圾文件。...如果是很小的文件还可以,但是git并没有对数据文件进行优化,尤其是大文件。 git add data.csv 解决方案:使用问题1中提到的工具来存储和共享数据。...不记录代码 我明白你着急进行一些分析。您可以一起努力取得成果给客户或老板。然后一个星期后,他们说“请您更新此内容”。您看着您的代码,不记得为什么要这么做。现在想象其他人需要运行它。...将数据另存为csv或pickle 回到数据,毕竟是数据科学。就像函数和for循环一样,通常使用CSV和pickle文件,但它们实际上并不是很好。CSV不包含架构,因此每个人都必须再次解析数字和日期。

    93020

    收藏 | 10个数据科学家常犯的编程错误(附解决方案)

    以下是我经常看到的10大常见错误,本文将为你相关解决方案: 不共享代码中引用的数据 对无法访问的路径进行硬编码 将代码与数据混合 在Git中和源码一起提交数据 编写函数而不是DAG 写for循环 不编写单元测试...不写代码说明文档 将数据保存为csv或pickle文件 使用jupyter notebook 1....将数据保存为csv或pickle文件 回到数据,毕竟是在讲数据科学。就像函数和for循环一样,CSV和pickle文件很常用,但是并不好用。...CSV文件不包含纲要(schema),因此每个人都必须再次解析数字和日期。Pickle文件解决了这个问题,但是它只能在python中使用,并且不能压缩。两者都不是存储大型数据集的最优格式。...使用jupyter notebook 最后一个是颇有争议的错误:jupyter notebook和csv文件一样普遍。许多人使用它们,但是这并不意味着它们很好。

    1K30

    独家 | 10个数据科学家常犯的编程错误(附解决方案)

    以下是我经常看到的10大常见错误,本文将为你相关解决方案: 不共享代码中引用的数据 对无法访问的路径进行硬编码 将代码与数据混合 在Git中和源码一起提交数据 编写函数而不是DAG 写for循环 不编写单元测试...不写代码说明文档 将数据保存为csv或pickle文件 使用jupyter notebook 1....将数据保存为csv或pickle文件 回到数据,毕竟是在讲数据科学。就像函数和for循环一样,CSV和pickle文件很常用,但是并不好用。...CSV文件不包含纲要(schema),因此每个人都必须再次解析数字和日期。Pickle文件解决了这个问题,但是它只能在python中使用,并且不能压缩。...使用jupyter notebook 最后一个是颇有争议的错误:jupyter notebook和csv文件一样普遍。许多人使用它们,但是这并不意味着它们很好。

    99620

    数据科学家常犯的十大编程错误

    1import pandas as pd 2df1 = pd.read_csv('file-i-dont-have.csv') # fails 3do_stuff(df) 解决方案:使用d6tpipe与代码共享数据文件或上载到...这对于很小的数来说是可以的,但是git没有针对数据进行优化,尤其是大型文件。 1git add data.csv 解决方案:使用#1中提到的工具来存储和共享数据。...()) 11# should be: df.groupby('g').mean() 解决方案:Numpy、scipy和panda为你认为可能需要循环的大部分内容提供向量化的函数。...8.不记录代码 我很明白你急着做分析,你急于一起把结果告诉你的客户或老板。一周后,他们 回来说“你能修改xyz吗”或者“你能更新一下吗”。你看着你的代码,却不记得你当初为什么这么做了。...9.将数据保存为csv或pickle 备份数据,毕竟这是数据科学。就像函数和for循环、csv和pickle文件是常用的,但实际上它们也不是很好。CSV不包含模式,因此每个人都必须重新分析数字和日期。

    95120

    快速提升效率的6个pandas使用小技巧

    ()方法: df.isna().mean() 注意:这里isnull()和isna()使用效果一样。...做法是分别读取这些文件,然后将多个dataframe组合到一起,变成一个dataframe。 这里使用内置的glob模块,来获取文件路径,简洁且更有效率。...在上图中,glob()在指定目录中查找所有以“ data_row_”开头的CSV文件。 glob()以任意顺序返回文件名,这就是为什么使用sort()函数对列表进行排序的原因。..._*.csv'))返回文件名,然后逐个读取,并且使用concat()方法进行合并,得到结果: 「列合并」 假设数据集按列分布在2个文件中,分别是data_row_1.csv和data_row_2.csv...), axis=1) sorted(glob('data/data_row_*.csv'))返回文件名,然后逐个读取,并且使用concat()方法进行列合并(注意这里axis=1),得到结果: 本文就到这里

    3.9K10

    Dask教程:使用dask.delayed并行化代码

    一些需要考虑的问题 为什么我们从 3s 变成了 2s?为什么我们不能并行化到 1s? 如果 inc 和 add 函数不包括 sleep(1) 会发生什么?Dask 还能加速这段代码吗?...当这些函数速度很快时,这尤其有用,并帮助我们确定应该调用哪些其他较慢的函数。这个决定,延迟还是不延迟,通常是我们在使用 dask.delayed 时需要深思熟虑的地方。...('data/nycflights/1998.csv'), WindowsPath('data/nycflights/1999.csv')] 使用 pandas.read_csv 读取一个文件,并计算平均起飞延误...mean 上使用 compute sums = [] counts = [] for fn in filenames: # 读取文件 df = delayed(pd.read_csv)(...sum 上使用 compute sums = [] counts = [] for fn in filenames: # 读取文件 df = delayed(pd.read_csv)(fn

    5.2K20

    6个提升效率的pandas小技巧

    还可以看缺失值在该列的占比是多少,用df.isna().mean()方法: df.isna().mean() ? 注意:这里isnull()和isna()使用效果一样。 那如何处理缺失值呢?...在上图中,glob()在指定目录中查找所有以“ data_row_”开头的CSV文件。 glob()以任意顺序返回文件名,这就是为什么使用sort()函数对列表进行排序的原因。...「行合并」 假设数据集按行分布在2个文件中,分别是data_row_1.csv和data_row_2.csv ?...), ignore_index=True) sorted(glob('data/data_row_*.csv'))返回文件名,然后逐个读取,并且使用concat()方法进行合并,得到结果: ?...), axis=1) sorted(glob('data/data_row_*.csv'))返回文件名,然后逐个读取,并且使用concat()方法进行列合并(注意这里axis=1),得到结果: ?

    3.5K20

    6个提升效率的pandas小技巧

    还可以看缺失值在该列的占比是多少,用df.isna().mean()方法: df.isna().mean() ? 注意:这里isnull()和isna()使用效果一样。 那如何处理缺失值呢?...做法是分别读取这些文件,然后将多个dataframe组合到一起,变成一个dataframe。 这里使用内置的glob模块,来获取文件路径,简洁且更有效率。 ?...在上图中,glob()在指定目录中查找所有以“ data_row_”开头的CSV文件。 glob()以任意顺序返回文件名,这就是为什么使用sort()函数对列表进行排序的原因。...), ignore_index=True) sorted(glob('data/data_row_*.csv'))返回文件名,然后逐个读取,并且使用concat()方法进行合并,得到结果: ?...), axis=1) sorted(glob('data/data_row_*.csv'))返回文件名,然后逐个读取,并且使用concat()方法进行列合并(注意这里axis=1),得到结果: ?

    2.8K20

    利用 Python 分析 MovieLens 1M 数据集

    1 links.csv 文件里面的内容是帮助你如何通过网站id在对应网站上找到对应的电影链接的。...数据包含在links.csv,movies.csv,ratings.csv和tags.csv文件中。有关所有这些文件的内容和用法的更多详细信息如下。 这是一个发展的数据集。...https://doi.org/10.1145/2827872 文件的内容和使用 ======================== 格式化和编码 数据集文件以[逗号分隔值]文件写入,并带有单个标题行...包含逗号(,)的列使用双引号(```)进行转义。这些文件编码为UTF-8。...=False) print(top_female_ratings[:10]) by参数的作用是针对特定的列进行排序(不能对行使用),ascending的作用是确定排序方式,默认为升序 2.7 计算评分分歧

    2K30

    利用 Python 分析 MovieLens 1M 数据集

    数据包含在links.csv,movies.csv,ratings.csv和tags.csv文件中。有关所有这些文件的内容和用法的更多详细信息如下。 这是一个发展的数据集。...引文 ======== 要确认在出版物中使用数据集,请引用以下文件: F. Maxwell Harper和Joseph A. Konstan。 2015.MovieLens数据集:历史和背景。...https://doi.org/10.1145/2827872 文件的内容和使用 ======================== 格式化和编码 ----------------------- 数据集文件以逗号分隔值文件写入...包含逗号(,)的列使用双引号(`)进行转义。这些文件编码为UTF-8。...'F', ascending=False) print(top_female_ratings:10)by参数的作用是针对特定的列进行排序(不能对行使用),ascending的作用是确定排序方式,默认为升序

    5K11
    领券