当前位置: 首页 > 编程日记 > 正文

我发现了个Python黑魔法,执行任意代码都会自动念上一段「平安经」

来源 | Python编程时光

最近的"平安经"可谓是引起了不小的风波啊。

作为一个正儿八经的程序员,最害怕的就是自己的代码上线出现各种各样的 BUG。

为此,明哥今天分享一个 Python 的黑魔法,教你如何在你执行任意 Python 代码前,让 Python 解释器自动念上一段平安经,保佑代码不出 BUG 。

本技巧已经收录于最新版的 《Python黑魔法指南》v2.0,可以前往 Github 阅读:https://github.com/iswbm/magic-python)

做好心理准备了嘛?

明哥要开始作妖了,噢不,是开始念经了。

感谢佛祖保佑,Everything is ok,No bugs in the code.

你一定很想知道这是如何实现的吧?

如果你对 Linux 比较熟悉,就会知道,当你在使用 SSH 远程登陆 Linux 服务器的时候?会读取 .bash_profile 文件加载一些环境变量。

.bash_profile 你可以视其为一个 shell 脚本,可以在这里写一些 shell 代码达到你的定制化需求。

而在 Python 中,也有类似 .bash_profile 的文件,这个文件一般情况下是不存在的。

我们需要新建一个用户环境目录,这个目录比较长,不需要你死记硬背,使用 site 模块的方法就可以获取,然后使用 mkdir -p 命令创建它。

在这个目录下,新建一个 usercustomize.py 文件,注意名字必须是这个,换成其他的可就识别不到啦。

这个 usercustomize.py 的内容如下(明哥注:佛祖只保佑几个 Python 的主要应用方向,毕竟咱是 Python 攻城狮嘛...)

这个文件我放在了我的 github 上,你可以前往获取

一切都完成后,无论你是使用 python xxx.py 执行脚本

还是使用 python 进入 Python Shell ,都会先念一下平安经保平安。

继续探索

除此之外,可还有其他方法呢?

当然是有,只不过相对来说,会麻烦一点了。

先来看一下效果。

先查看下 ~/Library/Python/3.9/lib/python/site-packages 目录下并没有 usercustomize.py 文件。

但是在执行 python 进入 Python Shell 模式后,还是会打印了平安经。

这又是如何做到的?真见鬼了呀。

方法其实也很简单,只要做两件事,就能实现这样的效果:

第一件事,在任意你喜欢的目录下,新建 一个Python 脚本,名字也随意,比如我叫 startup.py,内容还是和上面一样

第二件事,设置一个环境变量 PYTHONSTARTUP,指向你的脚本路径

$ export PYTHONSTARTUP=/Users/MING/startup.py

这样就可以了。

但是这种方法只适用于 Python Shell ,只不适合 Python 执行脚本的方法。

如果要在脚本中实现这种效果,我目前想到最粗糙我笨拙的方法了 -- 手动加载执行。

本文分享了两个非常冷门 Python 的黑魔法技巧,可以实现在你执行任意的 Python 代码前,自动召唤佛祖念上一段平安经,希望本篇分享能对你有用。


推荐阅读
  • 我在攻克机器学习硕士学位的那些年

  • 谷歌顶级量子科学家详述他为何从谷歌辞职

  • TensorFlow、PyTorch夹缝之下:后浪的进击和野望

  • 紧急通知:招募 2000 名 IT 人学英语,免费培训!

  • AI不止能美颜,美妆迁移这样做 | 赠书

相关文章:

Java第一天学习笔记整理

一、关键字 java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。 常见的关键字: 用于定义数据类型的关键字 class interface byte short int lon…

ASP.NET中树形图的实现

来自:DotNET中文技术网 树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。我们知道在Windows下VB、PB、Delphi等工具提供了一个功能很强的树型控件TreeView…

同步你的手机联系人

从web1.0到2.0,我们进入了一个新的互联网时代移动时代.相信你的手机中,有许多联系人信息,你肯定不想把他们弄丢吧,像我之前隔一段时间就备份下,存到电脑中.现在再也不怕联系人信息丢了,只需要一个账户,同步一下,所有联系人信息都回来了.我是在Android智能手机上操作的,IOS就不清…

AI 技术发展飞快,高校 AI 教师的知识储备能满足学生旺盛的求知欲吗?

2019 年,AI 技术以惊人的速度发展;2020 年,AI 技术成熟的时机已经到来,随之而来的,是越来越旺盛的 AI 人才需求。近日,国家正式发布了一份《2020 年人工智能产业人才发展报告》显示,2020 年人工…

Windows Server 2008 R2安装子域控制器

一、实验网络拓扑图: 二、实验说明: 子域控制器安装前需要先把主域控制器安装好,然后子域控制器的DNS先指向主域控制器的IP地址 192.168.10.30,主域控制器委派DNS给子域控制器后再把子域控制器DNS指向自己的IP地址 192.168.10.31即…

使用嵌套的Repeater控件显示分级数据

作者:wincheer 来自:Asp.Net中文专业网 简介 本文描述如何使用嵌套的Repeater 控件来显示分级数据 。当然了,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGrid包含DataGrid,DataList包含DataList等等…

我还没考试,算法就说我的物理一定挂科

来源 | HyperAI超神经责编 | Carol封图 | CSDN 下载自视觉中国大学物理是理工科学生的基础必修课程,但也因为有一定的难度,令很多学生望而生畏。研究人员提出了用 AI 算法预测,哪些学生物理课有挂科风险,好让老师更好地进行教学指…

Dorado7功能及技术特点

简介 Dorado PresentationMiddleware(即Dorado展现中间件,以下简称Dorado)致力于辅助Web应用中表现层的开发过程。Dorado主要可以为您带来如下两方面的使用价值: 更加美观、更加人性化的Web操作界面。更加高效的表现层开发…

ELK日志分析平台搭建全过程

一、使用背景 当生产环境有很多服务器、很多业务模块的日志需要每时每刻查看时 二、环境 系统:centos 6.5 JDK:1.8 Elasticsearch-5.0.0 Logstash-5.0.0 kibana-5.0.0 三、安装 1、安装JDK 下载JDK:http://www.oracle.com/technetwork/java/j…

Android中Handler

本文通过例子来验证和说明使用Handler对象开启的线程是否和主线程为在同一线程中。 程序结构图如下: [1] HandlerActivity.java中的源码如下: [html] view plaincopyprint?package com.andyidea.handlerdemo2; import android.app.Activity; import…

刚出炉!程序员人才补贴:单项目最高补贴1000万元

最近,程序员届有一个重大好消息,可能很多人还不知道,那就是:国内某些城市已经开始程序员人才补贴了!对于人工智能公司的项目开发、人才引进、科技研发,最高按照国拨经费的30%给予配套支持,单个项…

ASP.NET中在线用户统计

天极论坛 统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法来统计…

数(Number)

--读《自然数原本:数数论》(薛海明,山西科学技术出版社)和《数论概论》([美]Joseph H.Silverman,机械工业出版社)笔记 人们对于数的认识从数数(counting)开始&#xff0c…

linux 中root用户与普通用户的切换

su是在用户间切换,可以是从普通用户切换到root用户,也可以是从root用户切换到普通用户。 如果当前是root用户,那么切换成普通用户test用以下命令:su test或su - test 如果要切换回root用户或普通用户切换至root用户,用…

2个月做出一款AI项目?这些学生在DeeCamp上决出两个总冠军

出品 | AI科技大本营(ID:rgznai100)2个月,一群来自世界各地高校的学生做出了技术与商业化兼具的AI落地项目。8月5日,DeeCamp 2020人工智能训练营迎来总冠军答辩暨结营典礼。最终,自动驾驶赛道和创新赛道的两支团队夺得…

C语言宏定义技巧

C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。 1、防止一个头文件被重复包含 …

了解C++默默编写并调用哪些函数

在C中,如果你写下 1 classEmpty{…}; 就相当于写下1 classEmpty{ 2 public: 3 Empty();//default构造函数 4 Empty(constEmpty& rhs){……};//copy构造函数 5 ~Empty(){…}//析构函数 6 Empty&operator(constEmpty& rhs){…};//copy赋值运算符 7 }; 惟有…

仅50张图片训练数据的AI分类技术PK​,阿里拿下ECCV 2020竞赛冠军

出品 | AI科技大本营(ID:rgznai100)近日,两年一度的世界计算机视觉领域顶会ECCV 2020的各项挑战赛结果出炉,在图像分类赛中,阿里安全的高效AI分类技术超越三星、深兰科技、同济大学等国内外多支队伍的同类技术获得冠军…

Eclipse生成jar文件

2019独角兽企业重金招聘Python工程师标准>>> 具体做法如下: 方法一:(工程没有引用外部jar包时,直接导出) 选中工程---->右键,Export...--->Java--->JAR file--->next-->选择jar file的路径及名称-->…

动态的管理ASP.NET DataGrid数据列

动网先锋 在ASP.NET的DataGrid数据显示控件编程中,我们有几种方式可以增加DataGrid columns。其中最常见的方法是在web forms设计器中增加,通过在控件工具箱中拖访DataGrid控件到web设计页面,然后在属性生成器中增加Columns列;还有一种方式就…

Django模型层Meta内部类详解

Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性。以下对此作一总结: abstract这个属性是定义当前的模型类是不是一个抽象类。所谓抽象类是不会对应数据库表的。一般我们用它来归纳一些公共属性字段,然后继承它的子类…

ASP.NET虚拟主机的重大安全隐患

作者:秦海鹏 来自: yesky 说明:本文中所有程序均在Windows 2000 Server中文版 SP2上编译运行无误开发环境:.Net 框架1.0 Version 1.0.3705 一、ASP.NET虚拟主机存在的重大隐患 我曾经在WWW.BRINKSTER.COM申请了一个免费的…

给力!一行代码躺赚普通程序员10年薪资!

笔者这两天闲逛知乎,看到了这个帖子:匿名答题,发表于2014年,此外没有留下任何多余信息。2年躺赚200万,相当于普通程序员10年的工资。没想到Pyhon这么强大,怪不得有人说“除了不会生孩子,Python什…

Hello world!

2019独角兽企业重金招聘Python工程师标准>>> 向世界打招呼,大家好,这是我的第一篇文章,我准备在这里开博! 转载于:https://my.oschina.net/chinesedragon/blog/57259

在VMware Workstation上安装Ubuntu 16.04 Server操作系统

Ubuntu 16.04 Server的下载 http://www.ubuntu.org.cn/download/server 按空格键(Space)选中第一个ssh服务 成功!

ASP.NET中WebForm组件CheckBoxList编程

作者:马金虎 来自:yesky CheckBox选择组件是一个程序中都经常的组件。在程序设计中使用到该组件,一般都不会只使用到一个,往往是以多个此类组件的形式出现的。在ASP.NET页面中如果要使用到多个CheckBox组件,除了添加…

今晚 8 点直播 | OpenCV 20 年,首款开源软硬一体的 OAK 套件来了!

从 2000 年首个开源 OpenCV Alpha 版本,到不久前刚刚发布的 OpenCV 4.4,跨平台计算机视觉库 OpenCV 在不知不觉间已经走过了 20 个年头。相信不少 IT、AI 的从业者几乎都使用过。据 CSDN 发布的《中国AI应用开发者报告2020》显示,作为计算机视…

Linux常用压缩解压命令

1.tar基本用法:1.打包文件:tar -cvf ~/test.tar ~/test 2.打包并压缩文件:tar -zcvf ~/test.tar.gz ~/test2.解包文件:先切换到要解包到的目录,然后执行:tar -xvf ~/test.tar参数详解:-c, --cre…

第二课 , 启动 ./start-all.sh

2019独角兽企业重金招聘Python工程师标准>>> 一.安装环境 1.保持第一课的基础 2.关闭防火墙 ,node1,node2,node3 service iptables stop 3.修改conf/mapred-site.xml <configuration><property><name>mapred.job.tracker</name><value&…

ASP.NET的WebFrom组件LinkButton编程

作者&#xff1a;阿虎 来自&#xff1a;yesky 在ASP.NET的WebForm组件中的LinkButton组件也是一个服务器端的组件&#xff0c;这个组件有点类似于HTML中的&#xff1c;A&#xff1e;标识符。它的主要作用是就是在ASP.NET页面中显示一个超链接。当这个链接被按动的时候&#x…