GVKun编程网logo

Python 中函数参数的数据类型(python函数的参数类型有几种)

4

此处将为大家介绍关于Python中函数参数的数据类型的详细内容,并且为您解答有关python函数的参数类型有几种的相关问题,此外,我们还将为您介绍关于Python中函数的收集参数机制、Python中函

此处将为大家介绍关于Python 中函数参数的数据类型的详细内容,并且为您解答有关python函数的参数类型有几种的相关问题,此外,我们还将为您介绍关于Python 中函数的 收集参数 机制、Python 中函数的参数(可变参数和关键字参数)、python 中函数的定义、返回值以及参数的简要介绍、python 函数参数类型判断(判断数据类型)的有用信息。

本文目录一览:

Python 中函数参数的数据类型(python函数的参数类型有几种)

Python 中函数参数的数据类型(python函数的参数类型有几种)

在 Python 中无法声明变量,因为 C 意义上的“声明”和“变量”都不存在。

reference

,

不幸的是,类型注释仍然只是一种方便,尽管通过 Python 解释器标志强制启用它们会很好。

但是,它们可以用于带有 mypy 的静态分析或用于带有 ensure 的动态运行时分析(与单元测试结合运行非常有效)。

取自ensure的文档:

from ensure import ensure_annotations

@ensure_annotations
def f(x: int,y: float) -> float:
    return x + y

或在您的 DateType 案例中:

>>> from ensure import ensure_annotations
>>> from datetime import datetime,timedelta
>>> @ensure_annotations
... def myfunc(param: datetime) -> datetime:
...     return 123
... 
>>> @ensure_annotations
... def mycorrectfunc(param: datetime) -> datetime:
...     return param + timedelta(days=1)
... 
>>> myfunc(datetime.now())
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
  File ".../lib/python3.8/site-packages/ensure/main.py",line 855,in __call__
    raise EnsureError(msg.format(
ensure.main.EnsureError: Return value of <function myfunc at 0x7f28325d7310> of type <class 'int'> does not match annotation type <class 'datetime.datetime'>
>>> mycorrectfunc(datetime.now())
datetime.datetime(2021,3,15,10,53,37,888834)
>>> 

这适用于所有其他类或 type aliases(非常!)大致以类似的方式使用 typedef 或更确切地说 assert isinstance(...)

Python 中函数的 收集参数 机制

Python 中函数的 收集参数 机制

定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数。返回结果是一个元组。

传递零个参数时函数并不报错,而是返回一个空元组。但以上这种方法也有局限性,它不能收集关键字参数。

对关键字参数进行收集的另一种 收集参数 机制:使用两个星号 ( ** ) ,用法同上。最后返回一个以参数名为键、参数值为键值的字典。

* 和 ** 是可以一起使用的,返回特定的结果。

 

参数收集的用处之一是使我们编写函数时不用头疼将 N 多个参数都塞在一个括号里,既美观又省事。用处之二便是:

* :可以将一系列值存放进一个元组变量里,可用该元组变量名加一个 * 号作为参数传递给一个正被调用的函数,而后该函数就可以自由地对这些值进行一系列合法的操作。

** :同理,只不过变量存放的方式是字典。

 

def foo(*param):
    print(param)

def foo_1(**param):
    print(param)
def foo_2(*param1, **param2):
    print(param1)
    print(param2)

if __name__ == ''__main__'':
    foo(1,2,3,4)   # (1, 2, 3, 4)

    foo_1(a = 1, b=2, c=3, d=4) # {''a'': 1, ''b'': 2, ''c'': 3, ''d'': 4}

    foo_2(6,7,8, m = 9, n = 10) # (6, 7, 8) {''m'': 9, ''n'': 10}

  

Python的4种传值的方式,必选传参 func(param)、默认传参func(param=value)、可选传参func(*param)、关键字传参func(**param)

# 必选参数 func(param): # 1、定义函数时的参数个数,顺序已定义好,在调用函数调时的参数个数、顺序必须一致,不能多,也不能少,也不能乱(和之前的顺序一致),因此叫必选参数,这是最常用的传参方式

def test(param1,param2,param3):

  print param1,param2,param3

test(1,"hello",True)

test(True,1,"hello")

执行结果:

1 hello True

True 1 hello 

 

# 默认参数func(param=value): #

1、定义函数时,已为参数设定一个默认值,假如调用函数时不传参,在函数内部使用参数时的值则为默认值,传参时则和必选参数一样使用

# 2、如果必选参数和默认参数同时存在,则默认参数必须跟在必选参数后面

# 3、如果有多个默认参数,调用时顺序可以不一致,但是必须要显式表明是哪个默认参数,例如 param2=100,但是建议统一按照函数定义的顺序进行使用

def test(param1,param2=100,param3=True):

  print param1,param2,param3 test(1)

# 默认参数可以不传 test(1,"hello",False)

# 多个默认参数时,调用顺序一致 test(1,param3=False,param2="hello")

# 调用顺序也可以不一致

执行结果:

1 100 True

1 hello False

1 hello False 

 

Python 中函数的参数(可变参数和关键字参数)

Python 中函数的参数(可变参数和关键字参数)

Python 中函数的参数(可变参数和关键字参数)
在为函数传递参数和函数定义时使用参数的时候,时常会看到有和 * 和 **,下面分别讲解其作用。
调用函数时使用 * 和 **
假设有函数
def test(a, b, c)



test (*args): * 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test (1, 2, 3) 。

test (**kwargs): ** 的作用则是把字典 kwargs 变成关键字参数传递。比如上面这个代码,如果 kwargs 等于 {‘a’:1,’b’:2,’c’:3} ,那这个代码就等价于 test (a=1,b=2,c=3) 。

定义函数参数时使用 * 和 **

def test(*args):
  定义函数参数时 * 的含义又要有所不同,在这里 *args 表示把传进来的位置参数都装在元组 args 里面。比如说上面这个函数,调用 test (1, 2, 3) 的话, args 的值就是 (1, 2, 3) 。:

def test(**kwargs):
  类似的, ** 就是针对关键字参数和字典的了。 调用 test (a=1,b=2,c=3) 的话, kwargs 的值就是 {‘a’:1,’b’:2,’c’:3} 了。

python 中函数的定义、返回值以及参数的简要介绍

python 中函数的定义、返回值以及参数的简要介绍

一、

  1. 函数

    定义:def 关键字开头,空格之后接函数名称和圆括号 (),后面紧跟‘:”。

       函数是对功能的封装

    语法:

       def 函数名(形参列表):

          函数体(代码块,return)

    调用:

      函数名(实参列表)

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)

#函数调用  
mylen()
View Code

  2.return 是一个关键字,很重要需要记下来。这个词的意思是 “返回”,他后面的值就叫 “返回值”。

   遇到 return,此函数结束,函数后面的东西将不会再执行

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    return length

#函数调用
str_len = mylen()
print(''str_len : %s''%str_len)
View Code

二、

return 返回值

      如果 return 什么都不写或者干脆不写 return。那么返回的就是 None

      如果 return 后面写了一个值,则调用者可以接收一个结果

      如果 return 后面写了多个结果,则调用者可以接收一个 tuole,调用者可以直接解构成多个变量

  1. 没有返回值

    不写 return 的情况下,会默认返回一个 None

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)

#函数调用
str_len = mylen()
#因为没有返回值,此时的str_len为None
print(''str_len : %s''%str_len
View Code

  2. 只写 return 后面不跟返回值,也会返回一个 None。只要 return 出现了就会结束函数 ****

def ret_demo():
    print(111)
    return
    print(222)

ret = ret_demo()
print(ret) #111
View Code

  3.return None 和上面两种情况一样。

  4.return 后面有返回值

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    return length

#函数调用
str_len = mylen()
print(''str_len : %s''%str_len)
View Code

  5. 返回多个值(可以返回任意多个、任意数据类型的值)

def ret_demo1():
    ''''''返回多个值'''''' 
    return 1,2,3,4


def ret_demo2():
    ''''''返回多个任意类型的值''''''
    return 1,[''a'',''b''],3,4

ret1 = ret_demo1()
print(ret1)
ret2 = ret_demo2()
print(ret2)
View Code

  6. 返回的多个值是已元组的形式被返回,也可以用多个值来接收

def ret_demo2():
    return 1,[''a'',''b''],3,4

#返回多个值,用一个变量接收
ret2 = ret_demo2()
print(ret2)

#返回多个值,用多个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

#用多个值接收返回值:返回几个值,就用几个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)
View Code

 

三、

  参数

    函数执行的时候给函数传递信息

    * 形参:函数声明的位置的变量

    * 实参:函数调用的时候给的具体的值

    传参:把实参交给形参的过程

    1>. 实参:

      位置参数,按照形参的参数位置,给形参传值

      关键字参数,按照形参的名字给形参传值  

      混合参数,即用位置参数,也用关键参数

    2. 形参:

      位置参数

      默认参数

python 函数参数类型判断(判断数据类型)

python 函数参数类型判断(判断数据类型)

方法一 

return (type(obj).__name__ == 'dict')

字典:dict 
列表:list 
集合:set

方法二

if isinstance(path_tmpls,str):
    pass
if isinstance(extensions,dict):
    pass
if isinstance(extensions,tuple):
    pass
if isinstance(extensions,list):
    pass
#判断变量类型的函数
def typeof(variate):
    type=None
    if isinstance(variate,int):
       type = "int"
    elif isinstance(variate,str):
      type = "str"
   elif isinstance(variate,float):
     type = "float"
   elif isinstance(variate,list):
       type = "list"
   elif isinstance(variate,tuple):
       type = "tuple"
   elif isinstance(variate,dict):
       type = "dict"
   elif isinstance(variate,set):
       type = "set"
    return type
# 返回变量类型
def getType(variate):
    arr = {"int":"整数","float":"浮点","str":"字符串","list":"列表","tuple":"元组","dict":"字典","set":"集合"}
    vartype = typeof(variate)
    if not (vartype in arr):
        return "未知类型"
    return arr[vartype]
     
#判断变量是否为整数
money=120
print("{0}是{1}".format(money,getType(money)))
#判断变量是否为字符串
money="120"
print("{0}是{1}".format(money,getType(money)))
money=12.3
print("{0}是{1}".format(money,getType(money)))
#判断变量是否为列表
students=['studentA']
print("{0}是{1}".format(students,getType(students)))
#判断变量是否为元组
students=('studentA','studentB')
print("{0}是{1}".format(students,getType(students)))
#判断变量是否为字典
dictory={"key1":"value1","key2":"value2"}
print("{0}是{1}".format(dictory,getType(dictory)))
#判断变量是否为集合
apple={"apple1","apple2"}
print("{0}是{1}".format(apple,getType(apple)))
#判断变量类型的函数
  def typeof(variate):
    type1 = ""
    if type(variate) == type(1):
        type1 = "int"
    elif type(variate) == type("str"):
        type1 = "str"
    elif type(variate) == type(12.3):
        type1 = "float"
    elif type(variate) == type([1]):
        type1 = "list"
    elif type(variate) == type(()):
        type1 = "tuple"
    elif type(variate) == type({"key1":"123"}):
        type1 = "dict"
    elif type(variate) == type({"key1"}):
        type1 = "set"
    return type1
#返回变量类型
  def getType(variate):
    arr = {"int":"整数",getType(apple)))

python判断数据类型是不是字典的方法

isinstance() 与 type() 区别:

type() 不会认为子类是一种父类类型,不考虑继承关系。

isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

关于Python 中函数参数的数据类型python函数的参数类型有几种的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Python 中函数的 收集参数 机制、Python 中函数的参数(可变参数和关键字参数)、python 中函数的定义、返回值以及参数的简要介绍、python 函数参数类型判断(判断数据类型)等相关知识的信息别忘了在本站进行查找喔。

本文标签: