精华内容
下载资源
问答
  • Python参数列表

    千次阅读 2018-12-09 16:48:27
    Python不定长参数列表 用星号*实现不定长参数列表,单个*表示将参数以tuple的形式传入,两个*表示将参数以dict的形式传入,前者传参不能指定参数,后者传参必须指定参数,且参数会被处理成str类型。 def f(*args, **...

    Python不定长参数列表

    用星号*实现不定长参数列表,单个*表示将参数以tuple的形式传入,两个*表示将参数以dict的形式传入,前者传参不能指定参数,后者传参必须指定参数,且参数会被处理成str类型。

    def f(*args, **kwargs):
        print "args:"
        for x in args:
            print x, type(x)
        print "kwargs:"
        for k,v in kwargs.iteritems():
            print k, type(k), v, type(v)
    
    f(1,'A',[], a=2,b=3)
    
    展开全文
  • python 参数类型

    千次阅读 2019-05-28 22:20:12
    文章目录1、简介2、必须...python 常见类型 2、必须参数 也就是我们常见的参数 def fun (name ,age): print(name + " "+ str(age) ) fun ("lum",27) log: lum 27 3、默认值函数 def fun_1(name,country = "CN",s...

    1、简介

    python 常见参数函数类型

    2、必须参数

    也就是我们常见的参数

    def  fun (name ,age):
        print(name + " "+ str(age) )
    
    fun ("lum",27)
    

    log:
    lum 27

    3、默认值函数

    def fun_1(name,country = "CN",sex = "Man"):
        print(name +" " +  country + " " + sex)
    
    fun_1("lum")
    fun_1("lum","China")
    fun_1("lum",sex = "Boy")
    

    打印:
    lum CN Man
    lum China Man
    lum CN Boy

    4、可变参数函数

    可以传入任意个参数

    def fun_3(*args):
        print(args)
    
    fun_3(1)
    fun_3("hello",1)
    fun_3(1,[1,"Hello",False])
    fun_3("hello",134,True)
    

    打印:
    (1,)
    (‘hello’, 1)
    (1, [1, ‘Hello’, False])
    (‘hello’, 134, True)

    我们看到 可变参将传进去的参数都放在了元组里,变成了数组对象

    
    def fun_3(*args):
        print(args)
        
    fun_3([1,"Hello"])
    fun_3(*[1,"Hello"])
    
    

    打印:

    ([1, ‘Hello’],)
    (1, ‘Hello’)

    def fun_3(*args):
        print(args)
        
    fun_3("Hello")
    fun_3(*"Hello")
    

    打印:
    (‘Hello’,)
    (‘H’, ‘e’, ‘l’, ‘l’, ‘o’)

    def fun_3(*args):
        print(args)
    fun_3((1,"Hello"))
    fun_3(*(1,"Hello"))
    

    打印:
    ((1, ‘Hello’),)
    (1, ‘Hello’)

    我们可以看到,可变参数也可以传递 字符串,列表、元组,但是在传递之前添加一个 * 就出 序列解包,也就是把他们里面的元素拿出来 ,依次传递
    示例:

    
    def fun3(*args):
        string = ""
        for i in  args:
            string += str(i)
        print(string)
    
    fun3(1,"SB",True)
    fun3(*[1,"SB",True])
    fun3([1,"SB",True])
    

    打印:
    1SBTrue
    1SBTrue
    [1, ‘SB’, True]

    5、可变关键字参数函数

    #fun4(1)  
    #fun4(1,2)
    #fun4({"name:1"})
    #fun4(**[[1,"Hello"]])   以上出错
    
    fun4(name = 1)
    fun4(name=1,age=2)
    fun4(**{"sex":3})      #3 可传入字典
    

    打印:
    {‘name’: 1}
    {‘name’: 1, ‘age’: 2}
    {‘sex’: 3}

    我们看到可变关键字函数,传入之后被封装成了 字典

    实例:

    def fun4(**args):
        print(args)
        for i in args.keys():
            print(str(i)) # 将键打印出来
    
    #fun4(1)
    #fun4(1,2)
    #fun4({"name:1"})
    #fun4(**[[1,"Hello"]])
    fun4(name = 1)
    fun4(name=1,age=2)
    fun4(**{"sex":3})    
    
    

    打印:
    {‘name’: 1}
    name
    {‘name’: 1, ‘age’: 2}
    name
    age
    {‘sex’: 3}
    sex

    展开全文
  • python参数传递:对象的引用

    千次阅读 2018-06-08 10:04:56
    python参数传递:对象的引用         大家都知道在python中,一切皆对象,变量也不再具有类型,变量...

    python参数传递:对象的引用

            大家都知道在python中,一切皆对象,变量也不再具有类型,变量仅仅是对象的一个引用,我们通常用变量来测类型,通常测得就是被这个变量引用得对象的类型。
    例如:
    这里写图片描述
    这里的类型就是123这个对象的类型。变量的作用就相当于c中的指针,指向特定的内存空间,有了这个基础,我们就可以来聊一聊python中的参数传递了。
    接触过c或c++的朋友都知道,一般我们常说的传参方式有两种:传引用、传值
    但是python和他们都不一样。python采用的是传递对象的引用,为了方便说明,我们来看一个例子:

    test = [1]
    def change1(a):
    	a = [2]
    
    def change2(a):
    	a.append(3)
    
    change1(test)
    change2(test)
    print test
    

    我们来看一下最后的输出:
    [1,3]
    是不是有人误以为是[2,3]?那你可得好好看接下来的内容。
    传参传的是对象的引用!!!!!!
    所以在change1(a)函数中,我们知道形参a与test引用了同一块内存空间,然后a在函数内部被修改了,它执行了另一块内存空间,也就是存放[2]的地方,但是只是a的指向改变了,test的指向还是存放[1]的内存空间。所以,接下来change2()对这块内存空间上放的值进行了修改,就得到了我们最后看到的结果。
    为了加深理解,我觉得有必要再举一个类继承的例子:

    class Parent(object): 
    
      x = 1
    
    ​class Child1(Parent): 
    
      pass
    
    ​class Child2(Parent): 
    
      pass
    
    ​print Parent.x, Child1.x, Child2.x 
    
    Child1.x = 2
    
    ​print Parent.x, Child1.x, Child2.x 
    
    Parent.x = 3
    
    ​print Parent.x, Child1.x, Child2.x​
    
    输出结果为:
    
    1 1 1
    
    1 2 1
    
    3 2 3
    

    在继承中,所有子类中的x原本都是引用的父类中x对象的存储空间,但是child1中的x单独指向了另一块存储空间。这样以来,的到这个结果也就不意外了

    展开全文
  • python参数问题

    千次阅读 2018-12-22 16:59:43
    定义默认参数要牢记一点:默认参数必须指向不变对象! 否则会掉进坑里面的

    定义默认参数要牢记一点:默认参数必须指向不变对象! 否则会掉进坑里面的

    参数组合
    在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

    比如定义一个函数,包含上述若干种参数:

    def f1(a, b, c=0, *args, **kw):
    print(‘a =’, a, ‘b =’, b, ‘c =’, c, ‘args =’, args, ‘kw =’, kw)

    def f2(a, b, c=0, *, d, **kw):
    print(‘a =’, a, ‘b =’, b, ‘c =’, c, ‘d =’, d, ‘kw =’, kw)
    在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

    f1(1, 2)
    a = 1 b = 2 c = 0 args = () kw = {}

    f1(1, 2, c=3)
    a = 1 b = 2 c = 3 args = () kw = {}

    f1(1, 2, 3, ‘a’, ‘b’)
    a = 1 b = 2 c = 3 args = (‘a’, ‘b’) kw = {}

    f1(1, 2, 3, ‘a’, ‘b’, x=99)
    a = 1 b = 2 c = 3 args = (‘a’, ‘b’) kw = {‘x’: 99}

    f2(1, 2, d=99, ext=None)
    a = 1 b = 2 c = 0 d = 99 kw = {‘ext’: None}
    最神奇的是通过一个tuple和dict,你也可以调用上述函数:

    args = (1, 2, 3, 4)
    kw = {‘d’: 99, ‘x’: ‘#’}
    f1(*args, **kw)
    a = 1 b = 2 c = 3 args = (4,) kw = {‘d’: 99, ‘x’: ‘#’}

    args = (1, 2, 3)
    kw = {‘d’: 88, ‘x’: ‘#’}
    f2(*args, **kw)
    a = 1 b = 2 c = 3 d = 88 kw = {‘x’: ‘#’}
    所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

    虽然可以组合多达5种参数,但不要同时使用太多的组合,否则函数接口的可理解性很差。

    小结
    Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。

    默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!

    要注意定义可变参数和关键字参数的语法:

    *args是可变参数,args接收的是一个tuple;

    **kw是关键字参数,kw接收的是一个dict。

    以及调用函数时如何传入可变参数和关键字参数的语法:

    可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过args传入:func((1, 2, 3));

    关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过kw传入:func({‘a’: 1, ‘b’: 2})。

    使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

    命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。

    定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。

    展开全文
  • python参数传递

    千次阅读 2018-07-12 21:20:54
    当我们在python中使用等号给数组赋值的时候往往会出现一个问题 a = [1, 2, 3] b = a print("a数组为:",a) # a数组为: [1, 2, 3] print("b数组为:",b) # b数组为: [1, 2, 3...
  • Python 参数解析库 docopt 简单使用图文教程。 转载文章,便于记录~~
  • python参数传递问题(参数传出)

    千次阅读 2017-07-28 21:02:34
    可更改参数传递变量、对象与类型关系python是动态类型语言,并不需要预先声明变量类型,变量的类型和值在赋值的那一刻完成初始化。进一步说,python中的类型是属于对象的,而不是变量。 例如:a=2 b=[1,2]分别表示...
  • python 参数解析器metavar

    千次阅读 2019-10-16 15:26:17
    元变量:它为帮助消息中的可选参数提供了不同的名称。在add_argument()中为metavar关键字参数提供一个值。 例如: >>> parser = argparse.ArgumentParser() >>> parser.add_argument('--foo'...
  • argv:即所谓的参数变量,这个变量保存着你运行Python脚本时传递给Python脚本的参数。 解包:把argv中的东西取出来,将所有的参数依次赋值给左边的变量。 在argv.py文件中输入以下代码: from sys import argv ...
  • python参数化-数组

    千次阅读 2017-09-04 20:04:00
    #coding: utf-8 __author__ = 'KK' from selenium import webdriver ...'''参数化 ''' search_text = ['python','中文','selenium'] for text in search_text: print text driver = webdriver.Ie() driver.get
  • python参数传递那些事

    千次阅读 2015-11-23 08:52:31
    python中,函数参数的定义和传递有以下几种方式: 语法 意义 def func(name) 普通参数,可以根据位置匹配,也可以根据key来匹配 def func(name=value) 默认参数,当参数...
  • 在PyCharm中设置python参数

    千次阅读 2018-08-31 16:26:07
    最近在学习python,在网上看到一个图片路径可用MD5重命名的实例,链接:...---》这应该是sys.argv[1]造成的,因为没有提供所需参数,现在的问题就是给当前运行程序提供参数 解决方案: 首先找到编辑器导...
  • args与位置参数和默认参数混用的情况下 示例一、(三者顺序是:位置参数、默认参数、*args)(注意三者的顺序) *args:(表示参数元组) def foo(x,y=1,*args): pass foo (1,2,3,4,5) // 其中的x为1,y=1的值...
  • python参数*params、**params使用

    千次阅读 2020-03-05 12:46:55
    目录 收集其余的位置参数:*params(输出元组) 收集关键字参数:**params(输出字典) 收集其余的位置参数:*params(输出元组) ...def print_params2(x,*params):#位置参数+收集位置参数...
  • 解释python参数fig.add_subplot(111)

    万次阅读 多人点赞 2019-12-16 14:54:04
    找了好几个文档总结了下括号里的参数代表的含义 (xxx)这里前两个表示几*几的网格,最后一个表示第几子图 可能说的有点绕口,下面上程序作图一看说明就明白 import matplotlib.pyplot as plt fig = plt.figure...
  • 对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数。这些“额外”的参数下一步再解释。注意args和kwargs只是python的约定。任何函数参数,你可以自己喜欢的方式...
  • Python参数传递 - 引用传递&值传递

    万次阅读 2016-05-25 09:51:42
    值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。>>> a1 = 520 >>> a2 = a1 >>> print a1 520 >>> print a2 520 >>> a2 = a1 + 1 >>> print a2 521 >>> ...
  • python 参数传递[打包与解包问题]

    千次阅读 2016-05-07 20:53:40
    1.传递参数时,可以传递基于参数名的字典f(**param_dict) 也可以传递基于位置的列表f(*param_list)2.获取参数列表对于函数,可以直接在开头param_dict=locals()获取参数字典 对于方法(类、实例),获取的参数列表...
  • Python参数类型检查的简单方法

    千次阅读 2011-07-18 13:29:50
    Python是一门弱类型语言,很多从C/C++转过来的朋友起初不是很适应。比如,在声明一个函数时,不能指定参数的类型。用C做类比,那就是所有参数都是void*类型!void类型强制转换在C++中被广泛地认为是个坏习惯,不到...
  • Python函数的参数多达5种,不像Java那样参数(必选参数)只有一种,而是像C++那样提供默认参数,除此之外,还提供可变参数、关键字参数、命名关键字参数,这样就...Python参数类型: - 基本参数(就是其他语言所说的参数
  • Python 命令行参数

    千次阅读 2016-09-11 22:25:25
    概述Python 提供了 getopt 模块来获取命令行参数。$ python test.py arg1 arg2 arg3Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表。 len(sys.argv) 是命令行参数个数。 注:...
  • python 函数多参数

    千次阅读 2013-07-21 11:40:38
    Python参数传递任意参数 如果用过C语言中的printf()函数,那么就会对参数传递个数可变的意义比较了解了。尽管可选参数的机制令函数的参数个数是可变的,但还是有限制的,参数个数有最大的限制,而且还要指明哪些...
  • python argv参数

    千次阅读 2017-07-29 17:05:39
    这里,当我们执行python using_sys.py we are arguments的时候,我们使用python命令运行using_sys.py模块,后面跟着的内容被作为参数传递给程序。Python为我们把它存储在sys.argv变量中。记住,脚本的名称总是sys....
  • Python命令行参数

    千次阅读 2017-06-04 23:14:14
    Python的命令行参数,提供了很多有用的功能,可以方便调试和运行,通过man python就能查看,以下是一些常用参数使用实例和场景: 1. -B参数,在import时候,不产生pyc或者pyo文件: 比如有a.py,内容如下:...
  • 文章目录Python命令行参数概览-c cmd参数示例-m mod参数示例file参数示例- 参数示例命令行选项详解-b 选项-B选项-d选项-E选项-h / -? / --help选项-i选项-I选项-O与-OO选项-q选项-s选项-S选项-u选项-v选项-V / --...
  • Python传入参数的几种方法

    万次阅读 多人点赞 2018-03-20 18:04:13
    Python传入参数的方法有:位置参数、默认参数、可变参数、关键字参数、和命名关键字参数、以及各种参数调用的组合 写在前面 Python唯一支持的参数传递方式是『共享传参』(call by sharing) 多数面向对象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 136,878
精华内容 54,751
关键字:

python参数

python 订阅