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

Python学习杂记_8_从程序外部传参的办法sys.argv

Python用 sys.argv[] 实现从程序外部传参 “外部”的含义,其实就是这些参数不是你在程序中定义的,而是在程序之外通过输入操作传递进来的。...sys.argv 会返回一个元组,元组的首个元素即sys.argv[0]是程序本身,第二个元素之后依次是我们通过输入来指定的各个参数。...举个栗子: ''' 写一个修改文件的程序,要求从外部传入三个参数:要被修改的文件名,将被修改的字符串,要修改成的字符串。...''' import sys import os print("这是个修改文件的程序".center(50,'*')) a = sys.argv # print(a[1:]) with open(a[...如果对外部传参还是不清楚的话,可以参考这篇博客: http://www.cnblogs.com/aland-1415/p/6613449.html

77630

Java 函数调用是传值还是传引用?从字节码角度来看看 !

Java中传参都是值传递,如果是基本类型,就是对值的拷贝,如果是对象,就是对引用地址的拷贝。 下文将从字节码的角度,分析Java中基本类型传参和对象传参。...如果修改传参的指向地址,调用传参的set方法,无法对原本参数的值进行修改。 综上所述,基本类型的传参,在方法内部是值拷贝,有一个新的局部变量得到这个值,对这个局部变量的修改不影响原来的参数。...从主函数的字节码中可以看到,它的值保存的还是第10行,通过istore_2保存到局部变量第2个索引处的18....之后会继续执行main函数栈帧,在function3函数栈帧中发生的一切都和Main Stack中的局部变量age的值没有任何关系。...1.main函数栈帧和上文测试基本类型传参时的字节码大致类似,不同的是局部变量处。局部变量2处保存的是main函数中新建的Car实例的堆上地址。

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

    一文读懂C++中的Lambda函数:简洁、高效、灵活

    二、捕获列表有时候,需要在匿名函数内使用外部变量,所以用捕获列表来传递参数。.../lambda_test test03 d = 30 202.2、引用捕获与引用传参类似,引用捕获保存的是引用,值会发生变化。...从 C++14 开始, Lambda 函数的形式参数可以使用 auto关键字来产生意义上的泛型。...三、总结lambda表达式的目的是把函数写的更加内聚;只需要在内部使用,就没必要写到外部,干扰其他函数,同时使代码更简洁。如果捕获列表为[&],则表示所有的外部变量都按引用传递给lambda使用。...如果捕获列表为[=],则表示所有的外部变量都按值传递给lambda使用。匿名函数构建的时候对于按值传递的捕获列表,会立即将当前可以取到的值拷贝一份作为常数,然后将该常数作为参数传递。

    31810

    【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析

    , 外部变量就是在函数的外部定义的变量, 在本函数中使用; -- 作用域 : 从外部变量定义的位置开始, 知道本源码结束都可以使用, 但是只能在定义extern后面使用, 前面的代码不能使用; -- 存放位置...函数参数的传值调用和传址调用 (1) 传值调用 和 传址调用 传值调用 : 以传值的方式将参数传递给函数, 不能直接修改主函数中变量的值, 仅仅是将副本传递给了函数; 传址调用 : 将 变量的指针 传递给函数...main(int argc, char **argv) { int a = 10, b = 5; printf("初始值 : a = %d, b = %d \n\n",.../a.out 初始值 : a = 10, b = 5 swap_1 传值 函数 a = 5, b = 10 执行 swap_1 函数, a = 10, b = 5 swap_2 传址 函数...a = 5, b = 10 执行 swap_2 函数, a = 5, b = 10 示例解析 :  -- 传值调用 : swap_1 是传值调用, 传入的是 main 函数中的 a b 两个变量的副本

    4.2K20

    【寻找Linux的奥秘】第六章:环境变量

    对于系统来说第一个执行的函数并不是main函数,在Linux中有一个_start函数,它作为第一个执行的函数去调用main函数,main函数既然被调用,那么就会传参。...下面让我们来看一看main函数有哪些参数: #include int main(int argc, char *argv[], char *env[]) { return...前面我们讲命令行参数时,我们说main函数是否有参数时除了argc、argv外,还有一个env,这个env其实就是我们的环境变量表。并且在main函数中我们如果要写参数,最多也只有这三个。...#include //main函数有参数 //最多有三个 //是父进程传递给我们的 int main(int argc, char *argv[], char *env[...那么main函数是怎么做到可以不传参数,也可以传两个参数,可以传三个函数的呢?

    14310

    C++反汇编第二讲,不同作用域下的构造和析构的识别

    argc, char* argv[]) { atexit(Abc);          //注册 C约定函数指针,当main函数结束的时候操作系统调用这个函数....E1代理函数内部可以看到传参的.   5.E3代理函数是为了注册析构函数的,为了使atexit函数正常运行而注册的(atexit和ininterm类似,一个从前往后,一个从后往前)   6.E2是E3内部给...PS: 注意,局部对象和传参的区别,局部对象会在函数内部进行调用构造,而传参的时候是在函数外面进行的初始化动作  三丶返回值为对象的识别 当返回值为对象的时候,会有两种情况 1.定义的时候产生拷贝动作...函数结束之后,外部会调用析构函数.  ...总结:  使用时获得对象则产生临时对象   1.局部对象进行构造   2.调用函数的时候产生临时对象,其内部产生构造和析构   3.返回的时候返回值给使用的对象赋值   4.临时对象析构   5.main

    1.3K100

    【C语言】传值调用与传址调用详解

    在C语言中,函数在被调用时会接收参数。参数传递是指在函数调用时,函数的输入数据(参数)如何从调用者传递到被调用的函数。传值调用和传址调用是两种常见的传递方式,它们的差别决定了函数能否改变传入参数的值。...传值调用会将参数的副本传递给函数,而传址调用则将参数的地址传递给函数,从而使得函数可以直接修改原始参数。...函数内对 x 和 y 的交换操作不会影响到 main 函数中的 a 和 b。 因为传入的是参数的副本,main 函数中的 a 和 b 的值没有改变。 3. 为什么传值调用无法修改外部变量?...传值调用的核心问题是,它将参数的副本传递给函数,而不是变量本身。这意味着函数对副本所做的任何修改都不会影响外部变量。...传值调用将参数的副本传递给函数,适用于不需要修改外部变量的情况。 传址调用则通过传递地址,使得函数能够直接修改外部变量,适用于需要修改变量的场景,尤其是在处理大数据时更为高效。

    78110

    main函数与命令行参数

    main 函数的概念 C语言中 main 函数称之为主函数 一个C程序是从 main 函数开始执行的 main函数的本质 main 函数是操作系统调用的函数 操作系统总是将 main 函数作为应用程序的开始...操作系统将 main 函数的返回值作为程序的退出状态 main 函数的参数 执行程序时,可以从命令行传值给C程序。...这些值被称为命令行参数,特别是想从外部控制程序,不是通过在代码内对这些值进行硬编码时,而是通过参数来控制代码部分逻辑。...int main(int argc,char *argv[]) argc:命令行参数个数(不给main()函数传递参数时默认值为1,即至少有一个参数为该可执行文件的文件名(含目录)) argv:命令行参数数组... #include int main(int argc, char* argv[]) { printf("%d\n", argc); for (size_t

    51710

    Linux:进程替换

    所以exec系列的函数只有失败的返回值而没有成功的返回值,因为一但成功后跑的就是新的代码和数据了,返回就没有意义了!  ...问题5:我们常说main函数是告诉操作系统该可执行程序的入口,但是main函数并不一定会写在最开始,那么操作系统是如何找到main函数的呢?...execv:v结尾,其实就是vector(我们要先创建一个数组然后将参数放进去之后再整体传过去),有一点点像main函数的参数argv[]  execvp:就是vector+path  execle/execvpe...,然后再调用main函数的时候将argc参数传递给程序,其实就相当于是你在执行该程序之前,优先给你加载出来一个栈帧结构。...传递给argc 2.4 普通命令 我们普通命令就是bash让子进程去帮助我们完成,所以我们要做的其实就是  进程创建、进程退出、进程等待、进程替换  问题:子进程要去执行程序的时候,要选择exec系列的那个函数呢

    80510

    优先级与环境变量的艺术:驾驭 Linux 系统的核心

    两个问题: 1.为什么函数返回值,会被外部拿到呢? 函数调用过程中,栈会保存必要的信息,包括返回地址、参数和局部变量等。...返回值通过寄存器或栈上的特定位置传递给调用者: 如果返回值是通过栈返回,调用者会在栈上预留一块区域,函数直接将返回值写入这块区域。 在调用完成后,调用者通过栈指针或其他方法从指定位置获取返回值。...在 C/C++ 中,命令行参数通过 main 函数的参数 argc 和 argv 获取: argc(argument count):参数的数量。...4.2 main 函数的形式 int main(int argc, char *argv[]) argc:表示参数的个数,包括程序本身的名称。...4.4 main函数的第三个参数 除了上面提到的 argc 和 argv 两个参数,main 函数还有第三个参数 env,它也是一个指针数组,存放的是该进程的环境变量。

    27100

    【Linux】详谈命令行参数&&环境变量

    一、浅谈命令行参数 我们的main函数正常来说是没有参数的,其实我们也可以给我们的main函数加上参数。...main函数的第一个参数为argc,参数类型为int,第二个参数为argv,参数类型为char*类型的指针数组(也叫命令行参数表),该指针数组以NULL结尾。...main函数的argc和argv参数是由命令行解释器(通常是操作系统的shell/bash)维护的。...当你从命令行运行一个程序时,命令行解释器会负责解析命令行中的各个部分,包括程序名(即argv[0])和传递给程序的任何选项(即argv[1]、argv[2]等)。...解释器还会计算选项的数量,并将其作为argc的值传递给main函数。命令行解释器会负责将这些信息正确地传递给程序的main函数,以便程序能够使用它们。

    74310

    值传参、指针传参、引用传参区别

    在C中,我们只了解到有两种传参方式,一种是值传递,另外一种是传递指针,一般情况下我们选择使用指针传递参数。在C++中,又新增了一种传参方式,那就是引用(type &),引用传参给我们带来了更好的体验。...而且在函数生命周期结束后,会随函数一起消失,如不作为返回值是无法传出的。...在传递给函数时相当于包装了原变量指针的地址传递给函数,可以理解为在函数中直接使用原变量进行操作,而且这个期间不会出现拷贝的行为。引用的本质是指针,C++对裸露的内存地址(指针)作了一次包装。...#include using namespace std; // 值传递,无法交换变量的值 // 另外注意:值传递和引用传递函数重载时会出现二义性 // 程序不知道该重载哪个函数来使用。...(int argc, char* argv[]) { int x = 10; int y = 20; // 传指针 // swap(&x, &y); // 传引用 swap(x, y); cout <<

    1.6K40

    【愚公系列】《循序渐进Vue.js 3.x前端开发实践》059-Vue Router的路由传参

    本文将深入探讨 Vue Router 中的路由传参机制,包括动态路由参数和查询参数的使用。我们将详细讲解如何在路由中定义参数、如何在组件中获取这些参数,以及如何将参数传递给其他路由。...接下来,我们需要将路由的传参映射到外部属性上。 3. 路由配置映射到属性 Vue Router 默认支持属性传递功能。...default: true } } ]; 3.2 使用对象传递静态属性 如果组件内部需要的参数与路由本身并没有直接关系,我们也可以将 props 设置为对象,此时 props 设置的数据将原样传递给组件的外部属性...3.3 使用函数动态传递属性 props 还有一种更便捷的使用方式,可以直接将其设置为一个函数,函数返回要传递到组件的外部属性对象,这种方式动态性很好,示例如下: const routes = [...使用对象传递静态属性:将静态数据传递给组件。 使用函数动态传递属性:根据路由参数动态生成传递给组件的属性。

    22410

    C语言的main函数解析

    main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的调用者(如操作系统),等同于 exit(0),来判断函数的执行结果。...main函数传参 首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。...函数原形 为main函数传参时,可选的main函数原形为: int main(int argc , char* argv[],char* envp[]); 参数说明: ①、第一个参数argc表示的是传入参数的个数...main函数运行之前的工作 从_start的实现可以看出,main函数执行之前还要做一系列的工作。...5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数 main之前运行的代码 下面,我们就来说说在mian函数执行之前到底会运行哪些代码:(1)全局对象的构造函数会在

    2.9K88

    Python魔法变量*args 和 **kwargs

    多个实参,放到一个元组里面,以*开头,可以传多个参数;**是形参中按照关键字传值把多余的传值以字典的方式呈现 *args 和**kwargs只是一个通俗的命名约定,只有变量前面的 *(星号)才是必须的...*args 和 **kwargs 主要用于函数定义。 可以将不定数量的参数传递给一个函数。主:不定的意思是预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。...*args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现) 示例: def foo(x,*args):     print(x)     print(args) foo...x,y,z 执行结果是: 1 2 3 **kwargs:(表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现) 示例: def foo(x,**kwargs):     print(x)     ...*argv: test **kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数。

    99530

    函数

    函数定义 下面我们看一看在Python中函数定义的基本形式: def 函数名(参数列表): # 代码块 return 返回值 下面我们看一个简单的实例,计算两个数的和...在Python函数参数的传递,可以传入不可变或可变类的参数。 不可变类型:类似C/C++中的传值参数。...可变类型:类似C/C++的引用参数(即传地址方式) 因为在Python中一切皆为对象,所以在Python中严格来讲我们不能跟在C/C++中一样说是值传递或引用传递,应该讲传不可变对象或可变对象。...元组传递 下面我们讲解下如何将元组作为参数传递。...下面我们将多个字符串传递给函数进行字符串连接操作: # -*- coding:utf-8 -*- __author__ = u'苦叶子' # 字符串连接函数 def str_join(str1, str2

    5K60
    领券