当前位置: 首页 > news >正文

重庆做网站的公司有哪些凤山网站seo

重庆做网站的公司有哪些,凤山网站seo,深圳网站搜索排名,图片制作视频手机软件今天在写代码的时候遇到了一个关于parser的一些小坑,记录在此备用。我们知道在python中可以用argprase来传递一些参数给代码执行,来看下面的例子,假设现在有一个test文件夹,下面有3个python文件,分别用a.py&#xff1b…

abcc9739e183b937576440199468d345.png

今天在写代码的时候遇到了一个关于parser的一些小坑,记录在此备用。

我们知道在python中可以用argprase来传递一些参数给代码执行,来看下面的例子,假设现在有一个test文件夹,下面有3个python文件,分别用a.py;b.py;c.py来表示,目录树如下。

22421c2e12d26fbb6fc2df22678cb750.png

每一个的初始代码为一个简单的print函数。

# a.py
def out_a():print("I am a.py")if __name__ == '__main__':out_a()# b.py
def out_b():print("I am b.py")if __name__ == '__main__':out_b()# c.py
def out_c():print("I am c.py")if __name__ == '__main__':out_c()

现在在a.py中引入模块argprase,并定义一些简单的参数,代码如下:

# a.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--first_parameter', default='first')
parser.add_argument('--second_parameter', default='second')
parser.add_argument('--third_flag', action='store_true')
args = parser.parse_args()
print(args)def out_a():print("I am a.py")if __name__ == '__main__':out_a()

这里面简单说一下第3个参数,这也是我今天想记录文章的原因,这个参数是argparse里面提供的开关布尔选项,actions记录的是一个动作,意味着在调用这个函数的时候,如果在命令行添加这个参数,则该参数为True,如果不添加这个参数,则该参数为False,归纳起来为如下的两个图。

135df1cc258e03ff0d9b77d4c9057c4d.png
没有调用第3个参数的情况

ef5eb82caf39cc8114f75ec8cf7fbf84.png
调用第3个参数的情况

对于这种开关布尔选项更为详细的介绍,可以参考知乎问题:

Argparse中action的可选参数store_true,store_false到底是什么意思?​www.zhihu.com

到目前为止没有出现问题,接下来,我希望b.py也使用参数,并且还希望使用a.py里面的函数,因此我对b.py进行如下修改。

from a import out_a
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--fourth_parameter', default='fourth')
parser.add_argument('--fifth_parameter', default='fifth')
parser.add_argument('--sixth_flag', action='store_true')
args = parser.parse_args()def out_b():print("I am b.py")if __name__ == '__main__':out_b()out_a()

然后同样的,我们分别用两种方式来测试b.py,效果如下。

8a96652e1c0adb273068dec21b5fbde8.png
没有调用第3个参数,一切正常

c6199d49e8e4d301accc56e9604a1e89.png
调用第3个参数,报错了

当时我看到这里的时候想了很久,排除了拼写错误的情况以后,观察这里面的输出,发现看到的是a.py当中的3个参数,而不是b.py当中设置的参数,于是我将a.py和b.py的参数表打印出来,看到这样子的结果。

4345c9177233159610072761adb92f02.png
输出参数表的情况

可以发现尽管我使用的是from a import out_a,但依然引入了a.py当中的参数表,并且后引入的b.py的参数表没有办法覆盖掉。下面在c.py中同样引入3个参数,然后引入b.py的方法,代码如下:

from b import out_b
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--seventh_parameter', default='seventh')
parser.add_argument('--eighth_parameter', default='eighth')
parser.add_argument('--ninth_flag', action='store_true')
args = parser.parse_args()
print(args)def out_c():print("I am c.py")if __name__ == '__main__':out_c()out_b()

效果如下

4c63084dfa8d49eecd8e9087387bdbf8.png
没有使用第3个参数的情况

看到有3个参数列表输出就知道c.py的参数也是无效的了,验证一下。

937075f115654b4f0f4027d70a1793f6.png
使用第3个参数的情况

解决方案:

其实只需要将所有的参数表放到同一个文件里面就可以了,比如utils.py,由于这里是同一个文件夹下的3个文件,在import调用的时候就只需要初始化一次所有参数就可以使用了,有点类似于C语言当中的全局变量,因为这个东西排查了一个多小时,也是有点恼火了。

最后卖一下我的博客......

JCChan - 博客园​www.cnblogs.com
http://www.lbrq.cn/news/2658817.html

相关文章:

  • 岳阳网站制作网站推广的优化
  • 做电影网站程序哪个好哈尔滨电话本黄页
  • WordPress代码mac显示seo快速排名站外流量推广
  • 铜陵网站建设公司seo关键词排名优化app
  • 百度推广开户2400seo推广优化方案
  • 网站建设多久高端大气网站建设
  • 微商城网站开发百度品牌推广
  • xx汽车企业网站和信息化建设万江专业网站快速排名
  • 软件开发专业的大学谷歌seo顾问
  • 建站平台的基础概念信息流广告代理商排名
  • 固原住房和城乡建设厅网站seo是什么东西
  • 哪个网站做螺丝生意好招商外包
  • 做兼职写小说网站新闻营销发稿平台
  • 苏州网站建设狮山路网络营销案例具体分析
  • 济南网站制作哪家专业淘宝关键词优化
  • 网站建设只有20%的利润百度指数有三个功能模块
  • 网站源码换模板百度视频推广怎么收费
  • 洛阳网站建设设计公司哪家好网站内容管理系统
  • 虚拟机怎么做网站空间怎么样做免费的百度seo
  • 网站托管服务使用于那种类型的网站网络营销总监岗位职责
  • 怎样自学做网站全网营销有哪些平台
  • 没有官方网站怎么做seo优化南京网络推广公司排名
  • 潍坊 区网站建设正在直播足球比赛
  • 怎么做中英文的网站欧洲网站服务器
  • 合肥关键词排名优化百度seo关键词排名优化软件
  • 响水网站建设找哪家好项链seo关键词
  • 做网站一定要虚拟主机吗宁波网络营销公司
  • 做公司网站有什么猫腻广告推广网站
  • 孝南区建设局网站营销推广策略
  • 网上那么多色图网站怎么做的seo的概念
  • Delphi 中的字符串类型 string 详解
  • git命令详解
  • linux php版本降级,dnf版本控制
  • 如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
  • 本文章分享一个本地录音和实时传输录音给app的功能(杰理)
  • Sklearn 机器学习 数据降维PCA 使用PCA算法