2005年06月10日 星期五 15:29
*的传过来的是个元组; **的传过来是个字典。 呵呵!试验一下就知道了。 Qutr , qutianrang at gmail.com 2005-6-10 ----- 收到以下来信内容 ----- 发件人: 马剑 收件人: python-chinese 时 间: 2005-06-10, 15:24:13 主 题: [python-chinese] 问一下函数参数类型的区别(arg,*args,**argss) 我发现python函数的参数有3种写法:直接一个变量名、*变量名、**变量名。 上面三种有什么区别呢?都应该怎么用呢? _______________________________________________ python-chinese list python-chinese at lists.python.cn http://python.cn/mailman/listinfo/python-chinese -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050610/fce0197a/attachment.html
2005年06月10日 星期五 15:37
我写了一段试验代码: def test(arg,*args,**argss): print arg print args print argss if __name__ == '__main__': test('z',('a','b'),{'a':'x','b':'y'}) 但是输出的结果如下: z (('a', 'b'), {'a': 'x', 'b': 'y'}) {} 为什么第三个参数跑到第二个参数里面去了,组合成一个元组了? On Fri, 10 Jun 2005 15:29:44 +0800 "Qutr"<qutianrang at gmail.com> wrote: ================================================================= > *的传过来的是个元组; **的传过来是个字典。 > 呵呵!试验一下就知道了。 > > Qutr , qutianrang at gmail.com > 2005-6-10 > ----- 收到以下来信内容 ----- > 发件人: 马剑 > 收件人: python-chinese > 时 间: 2005-06-10, 15:24:13 > 主 题: [python-chinese] 问一下函数参数类型的区别(arg,*args,**argss) > > > 我发现python函数的参数有3种写法:直接一个变量名、*变量名、**变量名。 > > 上面三种有什么区别呢?都应该怎么用呢? > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese
2005年06月10日 星期五 15:49
你弄错了。*arg表示未在函数中列出参数的变量,但它又不是使用=来定义的。**args是表示使用key=value来定义的参数。因此*arg和**args在调用时并不是tuple和dict,而是类似于: def test(arg, *args, **argss): test(1, 'a', [], t=2, d='3') *args为'a', [] **argss为t=2, d='3' 但在函数内部你看到的args就是('a', [])和{'t':2, 'd':'3'}了 这里面有一个转换过程。 因此dict(a=2, b=3)就是使用这种方法来将一个函数式的调用转为了一个dict {'a':2, 'b':3} 在 05-6-10,马剑<honeyday at staffonly.org> 写道: > 我写了一段试验代码: > > def test(arg,*args,**argss): > print arg > print args > print argss > > if __name__ == '__main__': > test('z',('a','b'),{'a':'x','b':'y'}) > > 但是输出的结果如下: > > z > (('a', 'b'), {'a': 'x', 'b': 'y'}) > {} > > 为什么第三个参数跑到第二个参数里面去了,组合成一个元组了? > > On Fri, 10 Jun 2005 15:29:44 +0800 > "Qutr"<qutianrang at gmail.com> wrote: > ================================================================= > > *的传过来的是个元组; **的传过来是个字典。 > > 呵呵!试验一下就知道了。 > > > > Qutr , qutianrang at gmail.com > > 2005-6-10 > > ----- 收到以下来信内容 ----- > > 发件人: 马剑 > > 收件人: python-chinese > > 时 间: 2005-06-10, 15:24:13 > > 主 题: [python-chinese] 问一下函数参数类型的区别(arg,*args,**argss) > > > > > > 我发现python函数的参数有3种写法:直接一个变量名、*变量名、**变量名。 > > > > 上面三种有什么区别呢?都应该怎么用呢? > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年06月10日 星期五 15:59
简单明了,谢谢! 还有一个问题是python模块文件夹下面的__init__.py是干什么用的?什么时候需 要调用这个文件呢? On Fri, 10 Jun 2005 15:49:22 +0800 limodou <limodou at gmail.com> wrote: ================================================================= > 你弄错了。*arg表示未在函数中列出参数的变量,但它又不是使用=来定义的。**args是表示使用key=value来定义的参数。因此*arg和**args在调用时并不是tuple和dict,而是类似于: > > def test(arg, *args, **argss): > > test(1, 'a', [], t=2, d='3') > > *args为'a', [] > **argss为t=2, d='3' > > 但在函数内部你看到的args就是('a', [])和{'t':2, 'd':'3'}了 > 这里面有一个转换过程。 > > 因此dict(a=2, b=3)就是使用这种方法来将一个函数式的调用转为了一个dict {'a':2, 'b':3} > > 在 05-6-10,马剑<honeyday at staffonly.org> 写道: > > 我写了一段试验代码: > > > > def test(arg,*args,**argss): > > print arg > > print args > > print argss > > > > if __name__ == '__main__': > > test('z',('a','b'),{'a':'x','b':'y'}) > > > > 但是输出的结果如下: > > > > z > > (('a', 'b'), {'a': 'x', 'b': 'y'}) > > {} > > > > 为什么第三个参数跑到第二个参数里面去了,组合成一个元组了? > > > > On Fri, 10 Jun 2005 15:29:44 +0800 > > "Qutr"<qutianrang at gmail.com> wrote: > > ================================================================= > > > *的传过来的是个元组; **的传过来是个字典。 > > > 呵呵!试验一下就知道了。 > > > > > > Qutr , qutianrang at gmail.com > > > 2005-6-10 > > > ----- 收到以下来信内容 ----- > > > 发件人: 马剑 > > > 收件人: python-chinese > > > 时 间: 2005-06-10, 15:24:13 > > > 主 题: [python-chinese] 问一下函数参数类型的区别(arg,*args,**argss) > > > > > > > > > 我发现python函数的参数有3种写法:直接一个变量名、*变量名、**变量名。 > > > > > > 上面三种有什么区别呢?都应该怎么用呢? > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > -- > I like python! > My Donews Blog: http://www.donews.net/limodou > New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年06月10日 星期五 16:39
它相当于class的构造函数。在导入包中会自动执行。在这里可以做一些初始化的工作,比如导入子模块什么的。 在 05-6-10,马剑<honeyday at staffonly.org> 写道: > 简单明了,谢谢! > 还有一个问题是python模块文件夹下面的__init__.py是干什么用的?什么时候需 > 要调用这个文件呢? > > On Fri, 10 Jun 2005 15:49:22 +0800 > limodou <limodou at gmail.com> wrote: > ================================================================= > > 你弄错了。*arg表示未在函数中列出参数的变量,但它又不是使用=来定义的。**args是表示使用key=value来定义的参数。因此*arg和**args在调用时并不是tuple和dict,而是类似于: > > > > def test(arg, *args, **argss): > > > > test(1, 'a', [], t=2, d='3') > > > > *args为'a', [] > > **argss为t=2, d='3' > > > > 但在函数内部你看到的args就是('a', [])和{'t':2, 'd':'3'}了 > > 这里面有一个转换过程。 > > > > 因此dict(a=2, b=3)就是使用这种方法来将一个函数式的调用转为了一个dict {'a':2, 'b':3} > > > > 在 05-6-10,马剑<honeyday at staffonly.org> 写道: > > > 我写了一段试验代码: > > > > > > def test(arg,*args,**argss): > > > print arg > > > print args > > > print argss > > > > > > if __name__ == '__main__': > > > test('z',('a','b'),{'a':'x','b':'y'}) > > > > > > 但是输出的结果如下: > > > > > > z > > > (('a', 'b'), {'a': 'x', 'b': 'y'}) > > > {} > > > > > > 为什么第三个参数跑到第二个参数里面去了,组合成一个元组了? > > > > > > On Fri, 10 Jun 2005 15:29:44 +0800 > > > "Qutr"<qutianrang at gmail.com> wrote: > > > ================================================================= > > > > *的传过来的是个元组; **的传过来是个字典。 > > > > 呵呵!试验一下就知道了。 > > > > > > > > Qutr , qutianrang at gmail.com > > > > 2005-6-10 > > > > ----- 收到以下来信内容 ----- > > > > 发件人: 马剑 > > > > 收件人: python-chinese > > > > 时 间: 2005-06-10, 15:24:13 > > > > 主 题: [python-chinese] 问一下函数参数类型的区别(arg,*args,**argss) > > > > > > > > > > > > 我发现python函数的参数有3种写法:直接一个变量名、*变量名、**变量名。 > > > > > > > > 上面三种有什么区别呢?都应该怎么用呢? > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
Zeuux © 2025
京ICP备05028076号