数据类型与参数

数据类型:

可变对象与不可变对象:

  元组(tuple)、数值型(number)、字符串(string)均为不可变对象,而字典型(dictionary)和列表型(list)的对象是可变对象。字典的key一定要是不可变对象

函数参数:

在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

eg:

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

在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

>>> func(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> func(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> func(1, 2, 3, ‘a‘, ‘b‘)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {}
>>> func(1, 2, 3, ‘a‘, ‘b‘, x=99)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {‘x‘: 99}

最神奇的是通过一个tuple和dict,你也可以调用该函数:

>>> args = (1, 2, 3, 4)
>>> kw = {‘x‘: 99}
>>> func(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {‘x‘: 99}

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

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的习惯写法,当然也可以用其他参数名,但最好使用习惯用法

时间: 2024-10-25 22:15:20

数据类型与参数的相关文章

python基本数据类型-字符串参数(学习笔记)

第一个: capitalize(self): 举例说明: a1 = "alex" tmp = a1.capitalize() print(tmp) 输出结果:Alex 字符串参数说明:capitalize(),将字符串第一个字母大写. 第二个: center() 举例说明: a1 = "alex" tmp = a1.center(20,"_") print(tmp) 输出结果:_______alex_______ 字符串参数说明:center()

学习AS3菜鸟起飞吧之—函数(四):形式参数和实际参数

函数的参数是外界与函数内部通信的方法,对于有参函数来说,函数调用时函数有数据传递的关系. 看代码: //调用函数max(5,7);//定义函数function max(x:int,y:int):int{     if(x > y)     {           x = x;      } else {              x = y;      }      return x;} 如果一个函数有返回值,可使用 return语句,并在定义函数时声明返回值的类型. 上面的代码在函数调用过程中

java 方法参数-值调用,引用调用问题

(博客内容来自于core java卷一) 1. xx调用:程序设计语言中方法参数的传递方式: 引用调用(call by reference):表示方法接收的是调用者提供的变量地址. 值调用(call by value):表示方法接收的是调用者提供的值. 命名调用(call by name):已经成为历史. 2. Java使用值调用,而且只有值调用.也就是说方法得到的是参数值的一个拷贝,并不是参数值本身,所以,方法不能修改传递给它的的任何参数变量本身. 看下面代码: public class te

java方法参数

java程序设计语言总是采用按值调用.也就是说,方法得到的是所有参数值的一个拷贝,特别:方法不能修改传递给它的任何参数变量的内容. 方法参数共有两种类型: 1.基本类型(数字,布尔值). 2.对象引用. java中方法参数的使用情况: 1.一个方法不能修改一个基本数据类型的参数(数值 布尔型). 2.一个方法可以改变一个对象参数的状态. 3.一个方法不能让对象参数引用一个新的对象. 一个方法不可能修改一个基本数据类型的参数,而对象引用作为参数就不同了

Oracle基本数据类型 【上】

1.字符数据型(CHAR,VARCHAR2,LONG)      CHAR:以存储字母数字值,这种数据类型的列长度可以是1到2000个字节.如果未指明,则默认其占用一个字节,如果用户输入的                值小于指定的长度,数据库则用空格填充至固定长度..     VARCHAR2:其实就是VARCHAR,只不过后面多了一个数字2,VARCHAR2就是VARCHAR的同义词,也称别名.数据类型大小                         在1至4000个字节,但是和 CHA

C# 方法和参数

/*方法和参数 * 1.c#的方法必须在某个类型当中 * 重要:一个类中的所有方法的签名必须具有唯一性:方法名,参数的数据类型,参数的数量这三个标准来定义唯一性:不包括返回类型:不包括参数的名称 * 2.可选参数的意思就是在声明方法的时候将常量值赋给参数,以后调用方法时就不必每个参数都指定: * 重要:所有的可选参数必须放在必须参数(无默认值)的后面,默认值必须是常量 * Date: 2015/2/5 * Time: 14:33 * 规范: * 1.开发者应侧重于可读性,而不是在写出更简短的代码

const修饰函数参数 const修饰函数返回值 const修饰成员函数

看到const 关键字,C++程序员首先想到的可能是const 常量.这可不是良好的条件反射.如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是constant 的缩写,"恒定不变"的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:"Use const whenever you need". 1

四、C#方法和参数

方法是一种组合一系列语句以执行一个特定操作或计算一个特殊结果的方式. 它能够为构成程序的语句提供更好的结构和组织. 在面向对象的语言中,方法总是和类关联在一起的,我们用类将相关的方法分为一组. 方法通过参数来用于从调用者向目标方法传递数据的变量. 方法也通过一个返回值将数据返回给调用者 一个方法调用由以下元素构成:命名空间.类型名称.方法名称.参数以及返回数据类型. 1.命名空间 命名空间是一种特殊的分类机制,它将与一个特定功能有关的所有类型都分组到一起. 编译器认为所有命名空间都在同一个级别上

php ,转换数据类型,判断数据类型

1.php转换数据类型方法有强制转换和函数式转换: 强制转换就是直接在变量前面加上用括号括起来的类型名称即可. 函数式转换是bool settype(mixed var, string type).参数var 为指定的变量:参数type为指定的数据类型.参数Type有7个可选值,即boolean,float,integer,array,null,object和String.如果转换成功则settype函数返回true,否则返回false.当字符串转换为整形或浮点型时,如果字符串是以数字开头的,就