首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从python中的main函数之外的某个地方调用sys.argv是不好的约定

从Python中的main函数之外的某个地方调用sys.argv是不好的约定,因为sys.argv是一个命令行参数列表,通常在程序启动时由Python解释器自动填充。在main函数之外调用sys.argv可能会导致程序行为不稳定,因为在main函数之外调用sys.argv可能会在Python解释器启动时出现未定义的行为。

如果需要在main函数之外访问命令行参数,可以使用argparse模块来解析命令行参数,并将解析结果存储在全局变量中,以便在程序的其他部分使用。

以下是一个使用argparse模块解析命令行参数的示例代码:

代码语言:python
代码运行次数:0
复制
import argparse

# 创建解析器对象
parser = argparse.ArgumentParser(description='Process some integers.')

# 添加命令行参数
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')

# 解析命令行参数
args = parser.parse_args()

# 将解析结果存储在全局变量中
global_args = args

在程序的其他部分,可以使用global_args变量来访问命令行参数。例如:

代码语言:python
代码运行次数:0
复制
print(global_args.integers)

这将输出命令行参数中的整数列表。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python如何在main调用函数函数方式

一般在Python函数定义函数不能直接调用,但是如果要用的话怎么办呢?...() 结果: 打开文件B 如果需要调用同一个函数多个函数: 这里先设置了一个全局变量Position_number,然后在a()说明这个全局变量,再通过全局变量改变,来调用a()不同函数...在python里,只存在引用传递和值传递,当传进去一个值时候,就是值传递,当传进去一个列表或者字典时候,就是引用传递。 引用传递到函数内操作的话,在函数列表或者字典也会随之改变。...看来python也有不方便地方啊!那如果我们想要处理一个矩阵或者列表的话怎么办呢? 经过多次试验,终于找到了一种方法。在python,字典类型不可改变,而列表可以改变。...以上这篇Python如何在main调用函数函数方式就是小编分享给大家全部内容了,希望能给大家一个参考。

9.2K30

python高级-模块(14)

Python中有一个概念叫做模块(module),这个和C语言中头文件以及Java包很类似,比如在Python调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下...在模块定义全局变量、函数、类都是提供给外界直接使用工具 模块就好比工具包,要想使用这个工具包工具,就需要先导入这个模块 二、import 在Python中用关键字import来引入某个模块,...因为函数重名并没有任何提示,出现问题不好排查 案例: demo.py(自定义模块) #全局变量 title = "模块1" #函数 def say_hello(): print("我%s...因为我们外部取得参数可以是多个,所以获得一个列表(list),也就是说sys.argv其实可以看作一个列表,所以才能用[]提取其中元素。...Sys.argv[ ]其实就是一个列表,里边项为用户输入参数,关键就是要明白这参数程序外部输入,而非代码本身什么地方,要想看到它效果就应该将程序保存了,外部来运行程序并给出参数。

70920
  • Python -- pdb调试工具

    【简介调试工具】 pdb 使用如下代码就相当于添加断点了: import pdb     pdb.set_trace()  #设置断点地方,放置于程序 ipdb 相对于python,我们更趋向于ipython...,有漂亮颜色,和补全提示,以及bash混用; 相对于python内置pdb,ipdb优势也正在于此,其实就是对ipython调用: import ipdb ipdb.set_trace...有时候我们需要以后台形式执行python,此时没有输出交互,比如django开发,程序由uwsgi管理执行,标准输出已重定向,通常只能通过日志输出信息。...4、打印 -> p  在执行过程我们想看,某个变量打印值,除了c可以直接跳到下一个断点,打印期间所有值 “p”可以打印出某个变量值,但前提已经执行过这个变量。如下: ?...5、单步 -> s  “s”可以进入某个函数内部,然后再函数内使用n/p/b/c等 “r”将返回前面进入函数返回语句 ?

    1.3K30

    Python 学习入门(35)—— 模块

    模块我们就可以理解为lib库,如果需要使用某个模块函数或对象,则要导入这个模块才可以使用,除了系统默认模块(内置函数)不需要导入外。...判断语句段即可(__main__) 通过__name__变量来区分执行模块还是导入模块其实就非常类似javamain函数了,不同java约定方法名称,而python约定是变量名称,异曲同工之效...5 python解释器会将所有传递参数存储在sys.argv这个列表,所有的参数都被当成字符串进行处理。...同时即使不传递任何参数,也会有一个默认参数sys.argv[0]标识当前模块名称(如module_2.py),所以我们自己使用参数都是sys.argv[1]开始,下标1表示第一个传递参数,依次类推...因为一个大型系统几千上万个模块很正常事情,如果都聚集在一起显然不好管理并且有命名冲突可能,因此python也出现了一个包概念。

    73120

    scala调用python

    scala项目中调用python几种方法 首先在工程目录某个地方建立了一个python文件 test.py import sys def addNum(a, b): return a +...b if __name__ == '__main__': a = 3 b = 7 # if args input if len(sys.argv) == 3:...).exec("python src/test.py 8 9") proc2.waitFor() 其中: 可以在命令行带参数 本地python环境第三方扩展包可以正常使用 方法2:用Jpython...来调用 Jpython(http://www.jython.org/)一个java扩展包,在scala里面可以直接调用 首先将Jpyhon standaonejar文件导入到scala工程并引用...python:执行语句,执行文件,调用函数,但是由于莫名其妙原因,scalacall python函数不能用 用Jpython方式无法使用python本地安装第三方扩展包,因为Jpython运行在

    2.1K30

    字符串,字节和字符编码

    (languages, encoding, error) 第 1-2 行: 以通常命令行参数开始 第 5 行: 将代码主体部分定义为一个叫“main"函数,这个函数会在脚本最后运行时候被调用。...第 6 行:这个函数所做第一件事就是给出 languages 文件读取一行。 第 8 行:这是一个 if 语句,它让你在 Python 代码做决定。...main 函数内部又调用main 函数。如果一个叫 main 函数只是跳到顶部,而我在这个函数底部调用它,它就会回到顶部然后再次运行,这样就会形成一个循环(loop)。...记住,“DBES”说“解码字节”,raw_bytes 字节,所以我对它调用了 .decode() 来获取一个 python 字符串。这个字符串应该和 next_lang 变量一样。...记住这个之后会跳转到第 5 行 main 函数被定义地方,然后在第 10 行又被调用了一次,会造成它循环。不过第 8 行 if 语句又会阻止它无限循环。

    99940

    安装tep

    无需额外学习新语法,精通Python语言和Python库用法,让你代码能力直线上升。tep没有做特殊封装,只做了语法约定。tep编写自动化脚本方法,一种追求效率极速写法。...接口串联 得益于一个.py文件就是一条用例约定。接口串联就能通过变量进行实现,从上个接口响应取值,存入变量,放到下个接口入参,轻松完成。...Pairwise算法生成功能用例 Pairwise算法能针对多条件组合用例,笛卡尔积,根据两两组合过滤,生成更为精简测试用例。...,调用后会执行tep.cli:main函数: import argparse import sys from tep import __description__, __version__ from...[1] == "startproject": main_scaffold(args) startproject会调用main_scaffold函数,这里面的逻辑很简单,就是创建文件夹和文件

    45510

    程序出错你让它返回啥?

    在 C 语言中,错误码返回方式有两种:一种直接占用函数返回值,函数正常执行返回值放到出参;另一种将错误码定义为全局变量,在函数执行出错时,函数调用者通过这个全局变量来获取错误码。...不过,网上很多人不建议函数返回 NULL 值,认为这是一种不好设计思路,主要理由有以下两个。...对于查找数据不存在情况,函数到底该用 NULL 值还是异常,有一个比较重要参考标准是,看项目中其他类似查找函数都是如何定义,只要整个项目遵从统一约定即可。...如果项目从零开始开发,并没有统一约定和可以参考代码,那你选择两者任何一种都可以。你只需要在函数定义地方注释清楚,让调用者清晰地知道数据不存在时候会返回什么就可以了。...再补充说明一点,对于查找函数来说,除了返回数据对象之外,有的还会返回下标位置,比如 Java indexOf() 函数,用来实现在某个字符串查找另一个子串第一次出现位置。

    49620

    浅谈Python模块

    Python,一个.py文件就称之为一个模块(Module)。 使用模块有什么好处? 当一个模块编写完毕,就可以被其他地方引用。...我们在编写程序时候,也经常引用其他模块,包括Python内置模块和来自第三方模块。 模块还可以避免函数名和变量名冲突。相同名字函数和变量完全可以分别存在不同模块。...argv至少有一个元素,因为第一个参数永远该.py文件名称,例如: 运行python3 hello.py获得sys.argv就是['hello.py']; 运行python3 hello.py Michael...__name__置为__main__,而如果在其他地方导入该hello模块时,__name__则为其他地方,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外代码,最常见就是运行测试...在Python通过_前缀来实现

    36710

    模块使用

    #在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败 #因此,这种if测试可以让一个模块通过命令行运行时执行一些额外代码...,最常见就是运行测试 if __name__=='__main__': test() #里面可以写一些通过命令行运行该文件时处理,其他模块调用该文件时这些处理无法被执行...作用域   在一个模块,可能会定义很多函数和变量   在Python,哪些函数和变量希望给别人使用?哪些函数和变量仅在模块内部使用?...,用python全靠自觉)        例如,在Python,如果调用len()函数试图获取一个对象长度,实际上,在len()函数内部,它自动去调用该对象__len__()方法        ..._abc等        Python并没有一种方法可以完全限制访问private函数或变量,因此只是编程习惯上不应该引用private函数或变量,但不意味着不能引用   关于公开与非公开函数及变量使用原则

    46020

    Python入门到放弃 | 超简单 跟我学(八)

    如果使用以前版本 Windows,则基本说明相同,不过某些步骤过程可能略有不同。 第八讲 模 块 你已经看到了如何在你程序重复使用代码 —— 只需定义一次函数就可以对其重复调用了。...另一种方法就是用编写 Python 解释器语言来编写模块。例如,你可以用 C 语言 来写模块,在使用标准 Python 解释器中进行编译时,这些模块会 Python 代码调用。...注意到 Python ,数组索引 0 开始计数而不是 1 开始。 sys.path 模块导入时要搜索目录列表。...__version__ = '1.0' 上面这个一个 模块 例子。正如你所看见这样,比起我们普通 Python 程序,它并没有什么特别不一样地方。...Python 指导原则之一,就是「显式优于隐式」。你可以运行 import this 来了解更多相关内容。 dir函数 内置 dir() 函数能以列表形式返回某个对象定义一系列标识符。

    83810

    pycharm编写文件如何执行_pycharm可以写java吗

    +文件名命令,调用python程序相同 建议先使用cmd方式确认代码能够正常运行,因为如果代码在pycharm下编写执行, 可能在cmd方式下会出现缺少包情况 */ proc = Runtime.getRuntime...); } catch (InterruptedException e) { e.printStackTrace(); } 上面给出一个简单执行python文件方法, exec(“python...而sys.argv[0]代表python程序名,所以列表1开始读取参数。...以上代码实现一个两个数做加法程序,下面看看在java怎么传递函数参数,代码如下: int a = 18; int b = 23; try { String[] args = new String...[] { “python”,path,url1,url2 }; ,pathpython程序所在路径,url1参数1,url2参数2,以此类推。

    90320

    为什么SOA如此重要

    但为什么不允许把服务封装成一个library,提供标准API,让调用者将其link到自己服务调用呢?只要API不发生变化,无论library怎么折腾,都不会影响依赖于该library地方啊?...后来随着系统扩张,某个新功能X选择用golang实现。不巧,X也需要从图片里读取exif信息这个功能。...__': main_loop() exif服务和该服务调用者之间约定是: 1) 调用者向5555端口发送 CMD PATH(如:EXIF http://domain.com/img.jpg)...多说几句「把服务和调用者使用语言解耦」重要性。 软件工程角度来说,这有助于项目的快速高质完成。...软件工程师角度来说,他们可以不必深深陷入已有系统泥沼,完整了解整个系统来龙去脉,代码曲折历史就能开始做他们该做活。

    93560

    Python气泡提示与标签实现

    比如我一开始先是学Scratch,然后目标编一个植物大战僵尸。当我去编时候(没学过,因为很简单,一看就懂。),以为太阳天上掉下来效果时候不用编,而是以为自带。...(sys.argv) ex = Example() sys.exit(app.exec_()) 大家注意了,这里气泡提示就只能在‘关注一下吧’标签上看到了,这个标签以外地方都无法看到这个气泡提示...,大家应该知道我以前博客除了QQ之外没加粗过字体。...如果用Sublime Text3: ? 你就根本不知道有什么错。所以在这里我和大家一再强调: 标签内容只能字符串!!! 接着说。这个move就是将对象移动到界面的某个位置,以像素为单位。...__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) 到此这篇关于Python气泡提示与标签实现文章就介绍到这了

    1K10

    日志安全之linux清除日志

    我们用常见思路 1.直接删除日志文件 2.删除我们自己 ip 日志内容 3.rm -rf / 如果直接删除文件,那么管理员也会别的地方下手.或者恢复文件之类....嫁祸给别人.水逆退散 先编写一个生成随机数函数, 等会儿我们直接调用就行 function rand(){ min=$1 max=$(($2-$min+1)) num=$(date +%s%N)...那么我们要考虑就是如何生成多个 ip 供我们使用..我们编写一个函数 result, 每次调用就新生成 ip 即可 function result(){ rnd1=$(rand 11 253) rnd2...$rnd4 } 最终.我们生成随机 ip 就成功了.我们把 ip 通过 sed 插入到文件.但是 sed 不具备每次插入不一样值得.我们调用 for 循环多次取 result 函数值....通过执行脚本后, 没有10.10.10.2记录了 ? 当然.我还是建议使用 python 完成这项工作..当日志超过10w 或者100w 级以上数量 . bash 执行速度就会显得极其鸡肋.

    3.6K50

    Python面向对象:杂七杂八知识点

    为什么有这篇"杂项"文章 实在是因为python对象方面的内容太多、太乱、太杂,在写相关文章时比我所学过几种语言都更让人"糟心",很多内容似独立内容、又似相关内容,放这也可、放那也可、放这也不好、放那也不好...所以,用一篇单独文章来收集那些在我其它文章不好归类知识点,而且会随时更新。 class、type、object关系 在python 3.x,类就是类型,类型就是类,它们变得完全等价。...来说,鸭子模型意思:只要某个地方需要调用Duckwalk、swim、quacks方法,就可以让Bird也作为Duck,因为它也实现了这3个方法。...当通过实例对象去调用方法时,或者说会自动传递self方法绑定方法,其它通过类名调用、手动传递self方法调用是非绑定方法,在3.x没有非绑定方法概念,它直接被当作普通函数。...在python,要定义严格类方法、静态方法,需要使用内置装饰器函数classmethod()、staticmethod()来装饰,装饰后无论使用对象名去调用还是使用类名去调用,都可以。

    92421

    日拱一卒,麻省理工教你性能分析,火焰图、系统调用栈,黑科技满满

    Python当中,我们可以使用cProfile模块来完成每个函数调用耗时分析。这里有一个简单例子,它实现了grep命令: #!...cProfile(以及其他一些分析器)可以展示每一个函数调用时间。...这些工具运行时候非常快,并且如果你在代码当中使用了一些第三方库,那么这些库内部函数调用也会被统计进来。...它将函数当做节点,函数之间调用当做有向边进行展示。...当我们需要查看某个文件被哪个进程打开时候,这个命令非常有用 网络连接和配置 - ss 能帮助我们监控网络包收发情况以及网络接口显示信息。ss 常见一个使用场景找到端口被进程占用信息。

    50720

    Python编程反模式

    如果迭代中一些元素可能引起异常,你需要在列表解析通过函数调用转移可能异常处理,或者干脆不使用列表解析。...由于print_file调用在外作用域中(即使有缩进),这里声明filename对于print_file函数可见。 那么如何避免这样错误呢?...首先,在外作用域中不是IN_ALL_CAPS这样全局变量就不要设置任何值[3]。参数解析最好交给main函数,因此函数任何内部变量不在外作用域中存活。 这也提醒人们关注全局关键字global。...如果你不遵循PEP8,你应该有除“我只是不喜欢那样风格”之外更好理由。下边风格指南都是PEP8摘取,似乎编程者经常需要牢记。...工厂函数可以显式生成list; [2] string.find(str)返回str在string开始索引值,如果不存在则返回-1; [3] 在外作用于不要给函数局部变量名设置任何值,以防止函数内部调用局部变量时发生错误而调用外部作用域中同名变量

    1.1K60

    函数参数

    函数定义(一): 函数就是完成特定功能一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。 可以通过函数名在程序不同地方多次执行(这通常叫函数调用)。...代码重用 避免重复劳作,提供效率 函数定义和调用 def 函数名([参数列表]): ______定义 函数名([参数列表]) ______调用 函数名可以使用 数字+字母+下划线组成; 如果函数名有两个单词组成...例子1: 判断键盘输入数字还是非数字: def fun(): sth = raw_input("pls input a number :") try: if type...下面简单例子,它打开一个文件,在该文件内容写入内容,且并未发生异常: #!...---- 函数定义(二) 形式参数和实际参数 在定义函数时,函数名后面括号变量名称叫做“形式参数”,或者称为“形参” 在调用函数时,函数名后面括号变量名称叫做“实际参数”,或者称为“实参” 综合演练

    1.6K70
    领券