def fun(arg,args=1,*arg,**keywords):

python 一共有这四类参数,第一类最常见,不用多说,第二类,关键字参数,python能通过关键字找到参数,python函数的这种特性使得函数参数更加灵活,不一定要按顺序来传,第三类:一个星号是将非关键字参数收集起来,以tuple的形式保存,第四类则必须要提供”传递参数名=传递参数值”形式传递参数。

至于怎么传,相信大家都知道,这里不多说。

要说明的是在python2中这四类参数传递时是有优先顺序的,不管是定义函数,还是传递参数时都有这个顺序问题。

下面是今天被 问到的问题:

 def Fun(*param,base=3):
result = 0
for each in param:
result += each result *= base print('result is ', result) Fun(5,1, 2, 3, 4,base=5)

报错:

def Fun(*param,base=3):
                      ^
SyntaxError: invalid syntax

按照我上面的说法,这样很明显是不对的,即顺序不对。那么是不是把base,param对调就行了呢?显然不是,上面已经说明,在传递参数时,优先级同样适用。所以

Fun(base=5,5,1, 2, 3, 4,5)这样传递时仍然是不行的,因为顺序不对嘛。这就有点尴尬嘛,要想同时兼顾两者,一种解决办法是:Fun(5,5,1, 2, 3, 4,5)
注:上面代码中的问题在Python3中好像进行了优化,不存在语法错误了。

python函数 位置参数,关键字参数,可变参数优先级的更多相关文章

  1. Python - 函数形参之必填参数、缺省参数、可变参数、关键字参数的详细使用

    Python函数形参 必传参数:平时最常用的,必传确定数量的参数 缺省参数:在调用函数时可以传也可以不传,如果不传将使用默认值 可变参数:可变长度参数 关键字参数:长度可变,但是需要以kv对形式传参 ...

  2. Python星号*与**用法分析 What does ** (double star/asterisk) and * (star/asterisk) do for parameters? 必选参数 默认参数 可变参数 关键字参数

    python中*号**的区别 - CSDN博客 https://blog.csdn.net/qq_26815677/article/details/78091452 定义可变参数和定义 list 或 ...

  3. python(二):可变参数

    python中的函数定义: def func(参数, 默认参数, 可变参数) ... 可变参数有两种定义方式: def func(*args): ... 调用方式为func(arg1, arg2, a ...

  4. python函数的参数-可变参数,关键字参数

    # -*- coding: utf-8 -*- #coding=utf-8 ''' @author: tomcat @license: (C) Copyright 2017-2019, Persona ...

  5. Python函数的关键字参数

    除了位置参数的函数参数使用方式,还有一种在函数调用时指定形参等于指定实参的参数使用模式,该模式称为关键字参数.关键字参数使用可以不按形参的顺序传递实参,系统按形参的名字确认实参传递给哪个参数. 具体内 ...

  6. python3 关键字和可变参数笔记

    """普及一下字典的知识""" # dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First' ...

  7. Day5 - 04 函数的参数-可变参数*

    传入的参数的个数是可变的. 例子:定义一个函数,通过给出一组数,返回这组数中最大值与最小值的和.    def msum(numbers):        r = max(numbers) + min ...

  8. Python函数小结(1)--参数类型(*, ** 的区别), 闭包

    刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...

  9. Python 函数的一般形式及参数

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/01 21:46 # @Author : lijunjiang # @Fi ...

随机推荐

  1. OpenSSL 双向认证

    在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...

  2. oc-数据模型的建立

    @{@"name":@"David Beckham",@"age":@38,@"gender":@"男&quo ...

  3. 【转】ASP.NET MVC 的最佳实践

    [This post is based on a document authored by Ben Grover (a senior developer at Microsoft). It is ou ...

  4. LVM---动态调整磁盘容量

    LVM:logical volume manager(逻辑卷管理):LVM屏蔽了底层磁盘布局,方便于动态调整磁盘容量. 一.创建逻辑卷的步骤: 1)通过fdisk 工具将磁盘转换为linux分区 2) ...

  5. 再看erlang的socket部分基础

    socket的选项里面的{packet,0}和{packet,raw}的区别 {packet,} erlang处理2字节大端包头 {packet,} erlang处理4字节大端包头 {packet,} ...

  6. VBA相关

    --能否彻底隐藏某行或某列 用代码隐藏列,将其放在Private Sub Worksheet_SelectionChange(ByVal Target As Range)Columns(1).Enti ...

  7. [Freescale]E9学习笔记-LTIB总结

    转自:http://blog.csdn.net/wl_haanel/article/details/6231353   写在前面        符号'##'后面语句均为注释        需要做的操作 ...

  8. Dictionary 的使用

    1. 定义字典变量,并初始化 // 元素值字典 Dictionary<string, string> dic = new Dictionary<string, string>( ...

  9. 黄聪:wp-setting.php文件详解

    描述:用于设置公共变量.加载 WP 的程序和类库(存储 WP 函数.类和核心内容所在文件夹的位置).用户无需修改此文件,但是可以通过修改 wp-config.php 文件来进行配置. 定义 WPINC ...

  10. PLSQL_基础系列04_时间间隔INTERVAL(案例)

    2014-12-08 Created By BaoXinjian