正文
python类型检查函数 python查看类型的函数
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
python 函数参数的类型
1. 不同类型的参数简述
#这里先说明python函数调用得语法为:
复制代码
代码如下:
func(positional_args,
keyword_args,
*tuple_grp_nonkw_args,
**dict_grp_kw_args)
#为了方便说明,之后用以下函数进行举例
def test(a,b,c,d,e):
print a,b,c,d,e
举个例子来说明这4种调用方式得区别:
复制代码
代码如下:
#
#positional_args方式
test(1,2,3,4,5)
1 2 3 4 5
#这种调用方式的函数处理等价于
a,b,c,d,e = 1,2,3,4,5
print a,b,c,d,e
#
#keyword_args方式
test(a=1,b=3,c=4,d=2,e=1)
1 3 4 2 1
#这种处理方式得函数处理等价于
a=1
b=3
c=4
d=2
e=1
print a,b,c,d,e
#
#*tuple_grp_nonkw_args方式
x = 1,2,3,4,5
test(*x)
1 2 3 4
5
#这种方式函数处理等价于
复制代码
代码如下:
a,b,c,d,e = x
a,b,c,d,e
#特别说明:x也可以为dict类型,x为dick类型时将键传递给函数
y
{'a': 1,
'c': 6, 'b': 2, 'e': 1, 'd': 1}
test(*y)
a c b e d
#
#**dict_grp_kw_args方式
y
{'a': 1, 'c': 6, 'b': 2, 'e': 1, 'd': 1}
test(**y)
1 2 6
1 1
#这种函数处理方式等价于
a = y['a']
b = y['b']
... #c,d,e不再赘述
a,b,c,d,e
2.
不同类型参数混用需要注意的一些细节
接下来说明不同参数类型混用的情况,要理解不同参数混用得语法需要理解以下几方面内容.
首先要明白,函数调用使用参数类型必须严格按照顺序,不能随意调换顺序,否则会报错. 如 (a=1,2,3,4,5)会引发错误,;
(*x,2,3)也会被当成非法.
其次,函数对不同方式处理的顺序也是按照上述的类型顺序.因为#keyword_args方式和**dict_grp_kw_args方式对参数一一指定,所以无所谓顺序.所以只需要考虑顺序赋值(positional_args)和列表赋值(*tuple_grp_nonkw_args)的顺序.因此,可以简单理解为只有#positional_args方式,#*tuple_grp_nonkw_args方式有逻辑先后顺序的.
最后,参数是不允许多次赋值的.
举个例子说明,顺序赋值(positional_args)和列表赋值(*tuple_grp_nonkw_args)的逻辑先后关系:
复制代码
代码如下:
#只有在顺序赋值,列表赋值在结果上存在罗辑先后关系
#正确的例子1
x =
{3,4,5}
test(1,2,*x)
1 2 3 4 5
#正确的例子2
test(1,e=2,*x)
1 3 4 5 2
#错误的例子
test(1,b=2,*x)
Traceback (most recent call
last):
File "stdin", line 1, in module
TypeError: test()
got multiple values for keyword argument 'b'
#正确的例子1,处理等价于
a,b = 1,2 #顺序参数
c,d,e = x #列表参数
print a,b,c,d,e
#正确的例子2,处理等价于
a = 1 #顺序参数
e = 2 #关键字参数
b,c,d = x #列表参数
#错误的例子,处理等价于
a = 1 #顺序参数
b = 2 #关键字参数
b,c,d = x
#列表参数
#这里由于b多次赋值导致异常,可见只有顺序参数和列表参数存在罗辑先后关系
函数声明区别
理解了函数调用中不同类型参数得区别之后,再来理解函数声明中不同参数得区别就简单很多了.
1. 函数声明中的参数类型说明
函数声明只有3种类型, arg, *arg , **arg 他们得作用和函数调用刚好相反.
调用时*tuple_grp_nonkw_args将列表转换为顺序参数,而声明中的*arg的作用是将顺序赋值(positional_args)转换为列表.
调用时**dict_grp_kw_args将字典转换为关键字参数,而声明中**arg则反过来将关键字参数(keyword_args)转换为字典.
特别提醒:*arg
和 **arg可以为空值.
以下举例说明上述规则:
复制代码
代码如下:
#arg, *arg和**arg作用举例
def
test2(a,*b,**c):
print a,b,c
#
#*arg 和
**arg可以不传递参数
test2(1)
1 () {}
#arg必须传递参数
test2()
Traceback (most recent call last):
File "stdin", line 1,
in module
TypeError: test2() takes at least 1 argument (0 given)
#
#*arg将顺positional_args转换为列表
test2(1,2,[1,2],{'a':1,'b':2})
1 (2, [1, 2], {'a': 1, 'b': 2})
{}
#该处理等价于
a = 1 #arg参数处理
b = 2,[1,2],{'a':1,'b':2} #*arg参数处理
c =
dict() #**arg参数处理
print a,b,c
#
#**arg将keyword_args转换为字典
test2(1,2,3,d={1:2,3:4}, c=12, b=1)
1 (2, 3) {'c': 12, 'b': 1, 'd': {1: 2, 3:
4}}
#该处理等价于
a = 1 #arg参数处理
b= 2,3 #*arg参数处理
#**arg参数处理
c =
dict()
c['d'] = {1:2, 3:4}
c['c'] = 12
c['b'] = 1
a,b,c
2. 处理顺序问题
函数总是先处理arg类型参数,再处理*arg和**arg类型的参数.
因为*arg和**arg针对的调用参数类型不同,所以不需要考虑他们得顺序.
复制代码
代码如下:
def test2(a,*b,**c):
a,b,c
test2(1, b=[1,2,3], c={1:2, 3:4},a=1)
Traceback (most
recent call last):
File "stdin", line 1, in
module
TypeError: test2() got multiple values for keyword argument
'a'
#这里会报错得原因是,总是先处理arg类型得参数
#该函数调用等价于
#处理arg类型参数:
a = 1
a = 1
#多次赋值,导致异常
#处理其他类型参数
...
print a,b,c
def foo(x,y):
... def bar():
x,y
... return bar
...
#查看func_closure的引用信息
a =
[1,2]
b = foo(a,0)
b.func_closure[0].cell_contents
[1, 2]
b.func_closure[1].cell_contents
b()
[1, 2] 0
#可变对象仍然能被修改
a.append(3)
b.func_closure[0].cell_contents
[1, 2, 3]
b()
[1, 2, 3] 0
python 怎么判断list里元素类型
可以通过tpye()方法来判断list里的元素类型。代码举例如下:
testList = [1, 2, 'a', [1, 2]]
for listElement in testList:
print '%s 的类型是:%s' % (listElement, type(listElement))
其中,for in语句用来遍历testList这个list里的元素,然后分别打印出元素对应的类型,运行程序,输出结果为:
1 的类型是:type 'int'
2 的类型是:type 'int'
a 的类型是:type 'str'
[1, 2] 的类型是:type 'list'
扩展资料
python语言中type()函数介绍:
1、type()函数的作用
在python中type()是即简单又实用的一种对象数据类型查询方法。它是一个内建的函数,调用它就能够得到一个反回值,从而知道想要查询的对像类型信息。
2、type()函数使用方法:type(对象)
type()是接收一个对象当做参考,之后反回对象的相应类型。例如:
type(1)
type 'int' #整型
type("iplaypython")
type 'str' #字符串
Python3 & 基本数据类型(一)
Python提供的基本数据类型:数值(整型、浮点型、复数、布尔型等)、字符串、列表、元组、字典、集合等,将它们简单分类如下:
通常被称为整型,数值为正或者负,不带小数点。
Python 3的整型可以当做Long类型使用,所以Python 3没有
Python 2的Long类型。
Python 初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含 262个指向整数对象的指针数组,范围是 -5 到 256 。
Python的浮点数就是数学中的小数,类似C语言中的double。
浮点数 也就是小数,如 1.23 , 3.14 , -9.01 等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代, 1.23x10^9 就是 1.23e9 ,或者 12.3e8 , 0.000012 可以写成1.2e-5 等等。
复数 由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点。
对 与 错 、 0 和 1 、 正 与 反 ,都是传统意义上的布尔类型。
但在Python语言中,布尔类型只有两个值, True 与 False 。请注意,是英文单词的对与错,并且首字母要大写。
在Python中,0、0.0、-0.0、None、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了 nonzero ()或 len ()方法且方法返回0或False,则其实例也被当作False,其他对象均为True
布尔值还可以用and、or和not运算。
1)、and 运算是 与 运算,只有所有都为 True , and 运算的结果才是 True ;
2)、or 运算是 或 运算,只要其中有一个为 True , or 运算结果就是 True ;
3)、not 运算是 非 运算,它是单目运算符,把 True 变成 False,False 变成 True。
例如:
由以上案例可以看出,在做四则运算的时候,明显把 True 看做 1 , False 看做 0 。
4)空值
空值不是布尔类型,只不过和布尔关系比较紧密。
空值是Python里一个特殊的值,用 None 表示(首字母大写)。None不能理解为0,因为0是整数类型,而None是一个特殊的值。None也不是布尔类型,而是NoneType。
在某些特定的情况下,需要对数字的类型进行转换。
Python提供了内置的数据类型转换函数:
int(x) 将x转换为一个整数。如果x是一个浮点数,则截取小数部分。
float(x) 将x转换成一个浮点数。
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y): 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。
Python字符串即可以用单引号也可以用双引号括起来,甚至还可以用三引号括起来,字符串是以''或""括起来的任意文本。
例如:'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。
字符串中包括特殊字符,可以用转义字符\来标识
但是字符串里面如果有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义
例如:
print r'\\\t\\' #输出:\\\t\\
字符串的一些常见操作
切⽚是指对操作的对象截取其中⼀部分的操作
语法:序列[开始位置下标:结束位置下标:步⻓]
a. 不包含结束位置下标对应的数据, 正负整数均可;
b. 步⻓是选取间隔,正负整数均可,默认步⻓为1。
find():检测某个⼦串是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则返回-1。
index():检测某个⼦串是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则报异常。
rfind(): 和find()功能相同,但查找⽅向为右侧开始。
rindex():和index()功能相同,但查找⽅向为右侧开始。
count():返回某个⼦串在字符串中出现的次数。
replace():替换
split():按照指定字符分割字符串。
join():⽤⼀个字符或⼦串合并字符串,即是将多个字符串合并为⼀个新的字符串。
capitalize():将字符串第⼀个字符转换成⼤写。
title():将字符串每个单词⾸字⺟转换成⼤写。
lower():将字符串中⼤写转⼩写。
upper():将字符串中⼩写转⼤写。
lstrip():删除字符串左侧空⽩字符。
rstrip():删除字符串右侧空⽩字符。
strip():删除字符串两侧空⽩字符。
ljust():返回⼀个原字符串左对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串。
rjust():返回⼀个原字符串右对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串,语法和
ljust()相同。
center():返回⼀个原字符串居中对⻬,并使⽤指定字符(默认空格)填充⾄对应⻓度 的新字符串,语
法和ljust()相同。
所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
startswith():检查字符串是否是以指定⼦串开头,是则返回 True,否则返回 False。如果设置开
始和结束位置下标,则在指定范围内检查。
endswith()::检查字符串是否是以指定⼦串结尾,是则返回 True,否则返回 False。如果设置开
始和结束位置下标,则在指定范围内检查。
isalpha():如果字符串⾄少有⼀个字符并且所有字符都是字⺟则返回 True, 否则返回 False。
isdigit():如果字符串只包含数字则返回 True 否则返回 False。
isalnum():如果字符串⾄少有⼀个字符并且所有字符都是字⺟或数字则返 回 True,否则返回
False。
Python函数注解使用有哪些注意事项呢?
函数注解是关于用户自定义的函数的完全可选的、随意的元数据信息。
1.无论 Python 本身或者标准库中都没有使用函数注解;本节只是描述了语法。第三方的项目是自由地为文档,类型检查,以及其它用途选择函数注解。
2.注解是以字典形式存储在函数的 __annotations__ 属性中,对函数的其它部分没有任何影响。参数注解(Parameter annotations)是定义在参数名称的冒号后面,紧随着一个用来表示注解的值得表达式。返回注释(Return annotations)是定义在一个 - 后面,紧随着一个表达式,在冒号与 - 之间。下面的示例包含一个位置参数,一个关键字参数,和没有意义的返回值注释:
def f(ham: 42, eggs: int = 'spam') - "Nothing to see here":
... print("Annotations:", f.__annotations__)
... print("Arguments:", ham, eggs)
...
f('wonderful')
Annotations: {'eggs':
, 'return': 'Nothing to see here', 'ham': 42}
Arguments: wonderful spam
怎么判断id变量不同python
您可以使用Python的内置函数id()来判断两个变量是否不同。id()函数可以返回一个变量的唯一标识符,如果两个变量的id()函数返回的值不同,则说明这两个变量是不同的。例如:
a = 3
b = 4
if id(a) != id(b):
print("a和b是不同的变量")
else:
print("a和b是相同的变量")
因此,您可以使用id()函数来判断两个变量是否不同。
python内置函数有哪些
python常见的内置函数有:
1. abs()函数返回数字的绝对值。
2. all() 函数用于判断给定的参数中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True;空元组、空列表返回值为True。
3. any() 函数用于判断给定的参数是否全部为False,是则返回False,如果有一个为True,则返回True。 元素除了是 0、空、False外都算 TRUE。
4. bin()函数返回一个整数int或者长整数long int的二进制表示。
5. bool() 函数用于将给定参数转换为布尔类型,如果参数不为空或不为0,返回True;参数为0或没有参数,返回False。
6. bytearray()方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 = x 256(即0-255)。即bytearray()是可修改的二进制字节格式。
7. callable()函数用于检查一个对象是否可调用的。对于函数、方法、lambda函式、类以及实现了 __call__ 方法的类实例, 它都返回 True。(可以加括号的都可以调用)
8. chr()函数用一个范围在range(256)内(即0~255)的整数作参数,返回一个对应的ASCII数值。
9. dict()函数用来将元组/列表转换为字典格式。
10. dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
扩展资料:
如何查看python3.6的内置函数?
1、首先先打开python自带的集成开发环境IDLE;
2、然后我们直接输入"dir(__builtins__)",需要注意的是builtins左右的下划线都是两个;
3、回车之后我们就可以看到python所有的内置函数;
4、接下来我们学习第二种查看python内置函数的方法,我们直接在IDLE中输入"import builtins",然后输入"dir(builtins)";
5、然后回车,同样的这个方法也可以得到所有的python内置的函数;
6、这里我们可以使用python内置函数len()来查看python内置函数的个数,这里我们直接输入"len(dir(builtins))";
7、回车之后我们可以看到系统返回值153,说明我们现在这个版本中有153个内置函数;
8、最后我们介绍一个比较有用的内置函数"help",python内置函数有一百多个,我们当然不能记住所有的函数,这里python提供了一个"help"函数,我们来看一个例子一起来体会一下help函数的用法,这里我们直接输入"help(len)",然后回车,会看到系统给我们对于内置函数"len"的解释,当然对于其他函数可能会有更加详细的解释以及用法提示。
python类型检查函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python查看类型的函数、python类型检查函数的信息别忘了在本站进行查找喔。