函数的初识:

  • 以功能为导向,一个函数就是一个功能。随调随用。
优点:
  • 减少代码重复性。
  • 增强代码的可读性。

函数的结构:

def function_name():
函数体

  • def: 关键字,定义函数
  • function_name(): 函数名,与变量名设置相同,具有可描述性。
  • 函数体:要缩进。函数中尽量不要出现print()

函数的调用:

  • 当解释器读到 function_name() 才会执行此函数,如果没有读到则不会执行里面代码
  • 解释器读到一次便会执行一次。

函数的返回值:

  • return:

    • 在函数中遇到return直接结束函数。将数据返回给函数的执行者、调用者。function_name()
    • 如果return后面什么都不写,或函数中没有return,则返回None
  • return 返回单个值:
return value
# 值本身是什么类型值返回的就是什么类型的值
  • return 返回多个值:
return 'str',123,[l1,l2]
# 返回多个值是以元组的形式返回给函数的执行者。
# 可利用元组的拆包将每个元素赋值给多个变量。

函数的传参:

  • 将一些数据传到函数里面,让里面的代码使用上这个数据产生我们想要的结果

  • 格式:

    function_name( 参数 )

参数分为形参和实参:

  • 形参:

    写在定义函数的位置的变量叫形参,形式上的一个完整。表示这个函数需要什么值

    • 1.位置参数:
    def func(name,age,hight):
    return name,age,hight func('李白',23,170)
    • 2.默认参数:

      设置的意义:普遍经常使用的值。

      def func(name, age, hight=170):
      return name, age, hight print(func('李白',age=23))
  • 默认参数的坑:
    • 当默认参数指向的是可变数据类型时,无论调用这个默认参数多少次,所指向的对象都是同一个。

def func(a,list=[])
list.append(a)
return list
print(func(10)) # [10]
print(func(20,[])) # [20]
print(func(100)) # 修改的还是[10]这个列表,所以结果为[10,100]
  • 实参:

    在函数调用的时候给函数传递的值,实际执行的时候给函数传递的信息。

  • 1.位置参数:

    从左至右,按顺序一一对应

    def func(name,age,hight):
    return name,age,hight func('李白',23,170)
  • 2.关键字参数:

    可以不按顺序,各个参数要一一对应。

    def func(name,age,hight):
    return name,age,hight
    func(age=23,name='李白',hight=170)
  • 3.混合传参:

    既有位置参数也有关键字参数,位置参数一定要在关键字参数之前。

    def func(name,age,hight):
    return name,age,hight
    func('李白',age=23,hight=170)

可变长参数:

  • 函数定义时:
    • * 代表聚合。它将所有接收溢出的位置参数聚合成一个元组,赋值给args。

      ​ args:约定俗称

    def func(*args):
    return args
    print(func(1,2,3,'a','b'))
    # (1, 2, 3, 'a', 'b')
    • ** 代表将所有接收溢出的关键字参数聚合到一个字典中,赋值给kwargs。

      kwargs:约定俗称
    def func(**kwargs):
    return kwargs
    print(func(a='libai',b=123))
    # {'a': 'libai', 'b': 123}
# 组合使用:
def (a,b,*args,name='李白',**kwargs)
# *args用在位置参数之后,默认参数之前
# **kwargs用在默认参数之后
  • 在函数调用时
    • *: 代表将一个可迭代对象拆分,每一个元素表示一个实参。

      def func(*args):
      print(args) func('李白',['a','b',1,2,3])
      # 未使用* ,('李白', ['a', 'b', 1, 2, 3]) func(*'李白',*['a','b',1,2,3])
      # 使用* ,('李', '白', 'a', 'b', 1, 2, 3))
    • **:将字典里的每个键值对拆分,键表示每个型参,值表示实参

      dic1 = {'name': '太白', 'age': 18}
      dic2 = {'hobby': '喝茶', 'sex': '男'}
      def func(**kwargs): print(kwargs) # {'name': '太白', 'age': 18, 'hobby': '喝茶', 'sex': '男'} func(**dic1,**dic2)
    • 在函数外的用法:

      # 接收溢出的值
      a, *b = (1,2,3,4)
      print(a,b)
      # 1 [2,3,4] *rest,a,b = range(5)
      print(rest,a,b)
      # [0,1,2] 3 4 print([1,2, *[3,4,5]])
      # [1,2,3,4,5]

仅限关键字参数:

放在*args和**kwargs(如果有)之间,只能以关键字参数传值,且必须传值,否则会报错

def func(a,*args,b,**kwargs):
return a,args,b,kwargs print(func(1,2,b=3,c=4,d=5))
# (1, (2,), 3, {'c': 4, 'd': 5})
# b 只接收相应的关键字参数,且必须传参

形参角度最终的顺序:

def func(位置参数,*args,默认参数,仅限关键字参数,**kwargs)
def func(a,b,*args,x=3,y,**kwargs):
return a,b,args,x,y,kwargs print(func(1,2,3,4,x=5,y=6,z=8))
# (1, 2, (3, 4), 5, 6, {'z': 8})
  • 三元表达式:

    • 仅支持if else格式:

    条件为真时的结果 if 判断条件 else 条件为假时的结果

# 判断两个数的大小
def func(a,b):
return a if a > b else b
print(func(3,4))
# 4

Python函数的定义和参数的更多相关文章

  1. Python函数的定义、参数传入与函数的调用

    作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色.今天给大家介绍Python函数的定义.参数的传入以及调用方式.其中函数参数的传入方式为本节重点内容.Python函数的参数形式包 ...

  2. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  3. typescript 函数(定义、参数、重载)

    代码: // 本节内容 // 1.函数的定义 // 2.参数(可选参数/默认参数/剩余参数) // 3.方法的重载 // js // function add(x,y){ // return x+y ...

  4. 2017寒假零基础学习Python系列之函数之 函数之定义可变参数

    若想让函数接受任意个参数,就可以定义一个可变的参数: def fn(*args): print args fn() >>>() fn(1,2,5,6) >>>(1, ...

  5. Python基础灬函数(定义,参数)

    函数 函数定义 # 定义一个计算绝对值的函数 def cal_abs(x): if x >= 0: return x else: return -x # 调用函数 print('-1的绝对值是: ...

  6. 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数

    函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...

  7. Python函数的定义与调用、返回值、参数

    一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...

  8. python函数 位置参数,关键字参数,可变参数优先级

    def fun(arg,args=1,*arg,**keywords): python 一共有这四类参数,第一类最常见,不用多说,第二类,关键字参数,python能通过关键字找到参数,python函数 ...

  9. python:函数中五花八门的参数形式(茴香豆的『回』字有四种写法)

    毫不夸张的说,python语言中关于函数参数的使用,是我见过最为灵活的,随便怎么玩都可以,本文以数学乘法为例,演示几种不同的传参形式: 一.默认参数 def multiply1(x, y): retu ...

随机推荐

  1. [Leetcode]585. 2016年的投资(MySQL)

    题目 写一个查询语句,将 2016 年 (TIV_2016) 所有成功投资的金额加起来,保留 2 位小数. 对于一个投保人,他在 2016 年成功投资的条件是: 他在 2015 年的投保额 (TIV_ ...

  2. [06] 优化C#服务器的思路和工具的使用

    优化C#服务器的思路和工具的使用 优化服务器之前, 需要先对问题的规模做合理的预估, 然后对关键的数据做采样, 做对比, 看和自己的预估是否一致, 误差大在什么地方, 是预估的不对, 还是系统实现有问 ...

  3. 通过adrci ips打包incident给oracle

    1.adrci查看incident 2.show home 3.set home adrci> set home diag/rdbms/mesdb/mesdb1 4.show incident ...

  4. 逻辑漏洞介绍 & 越权访问攻击 & 修复建议

    介绍逻辑漏洞 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性.一般出现在密码修改.越权访问.密码找回.交易支付金额等功能处.其中越权访问又有水平越权和垂直越权两种,如下所示. ...

  5. spark-2-RDD

    RDD提供了一个抽象的数据架构,我们不必担心底层数据的分布式特性,只需将具体的应用逻辑表达为一系列转换处理,不同RDD之间的转换操作形成依赖关系,可以实现管道化,从而避免了中间结果的存储,大大降低了数 ...

  6. 2020.09 问题总结(Oracle-->MySQL、Maven、JSP-->Thymeleaf、Druid)

    2020.09 问题总结(Oracle-->MySQL.Maven.JSP-->Thymeleaf.Druid) 数据库建表 Oracle 转 MySQL 问题 Oracle MySQL ...

  7. 「ExLucas」学习笔记

    「ExLucas」学习笔记 前置芝士 中国剩余定理 \(CRT\) \(Lucas\) 定理 \(ExGCD\) 亿点点数学知识 给龙蝶打波广告 Lucas 定理 \(C^m_n = C^{m\% m ...

  8. Python字符编码和二进制不得不说的故事

    二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...

  9. Python基本数据类型详细介绍

    Python提供的基本数据类型主要有:布尔类型.整型.浮点型.字符串.列表.元组.集合.字典等等 1.空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示.None不能 ...

  10. ::在C++中是什么意思

    转自:https://blog.csdn.net/u012547790/article/details/22727277 ::在C++中是什么意思 今天又想了一下::在C++中是什么意思: 表示作用域 ...