函数及其参数

Python函数及其参数类型 定义函数: 1、函数代码块以def关键词开头,后面接函数名称、圆括号和冒号 如:def sum(): 2、参数放置于圆括号中 3、函数体必须有缩进 具体如下: def functionname( parameters ): "函数_文档字符串" function_suite return [expression] 重点说一下参数传递及参数类型 (一)、参数传递 传递的参数分为可更改和不可更改两种 在 python 中,strings, tuples, 和 numbers 是不可更改的对象 阅读详情
什么是函数?
  • 前面在讲解Python数据类型的时候,我们已经接触过函数了。我们说,所谓的函数其实就是Python语言中的一种工具,基于该工具可以完成不同的具体操作。

  • 案例:当你在野外露营的时候,如果想生火,如果你身上恰好带了打火机,则可以直接使用该工具自行完成生火操作,否则,你也可以自己利用现有环境下的资源自行制作取火工具。

函数基础
  • 自定义函数的使用要经过两个过程

    • 函数的定义(制定)

    • 函数的调用(使用)

(一)函数的定义​​​​​​​

  • 函数定义语法

    def 函数名(参数):
        #内部代码
        return 表达式
    def myFunc(): #函数定义的时候,函数体是不会被执行的
        #函数体
        a = 1
        b = 2
        c = a + b
        print('a和b的计算结果为:',c)

  - myFunc() #函数调用,函数定义中的函数体才会被执行

(二)函数的调用

        函数调用语法

        函数编写出来就是给人调用的。

        要调用一个函数,必须使用函数名后跟圆括号的方式才能调用函数。

        调用的同时要根据函数的定义体,提供相应个数和类型的参数,每个参数之间用逗号分隔,否则就会报错。

        函数调用的作用:1.实参给形参传值;2.执行函数内部的程序语句。   

  • 函数定义规范使用
def summer(lis):
      '''
      这里是函数的说明文档,doc的位置
      :param lis: 参数列表的说明
      :return: 返回值的说明
      '''
      total = 0
      for i in lis:
          total += i
      return total

  sum = summer([1, 2, 3, 5])
  print(sum)

(三)函数的返回值

返回值,可以将一个具体的结果返回给函数的调用

  • 函数的返回值
  • return语句 

  当一个函数被调用结束后,该函数势必已经将一组操作执行结束了,如果在操作执行结束后,想要将一个结果返回给调用者,则就可以使用return语句实现。

  # 返回一个数值或数据
  def func():
      return 1 + 2 # 3。
      # 当函数调用之后,return会给函数调用返回一个结果(给函数调用返回一个返回值)。返回的是return后面的语句。

  result = func()  # 用变量result接收函数调用后的返回值,函数的返回值一定是返回给了函数的调用。当函数调用之后,函数调用的结果(即函数内部所对应的程序当中return后边的数值或数据)返回给了函数的调用(return这个关键字把return后边的结果返回给了函数的调用。)。
  print(result)  # result是func()这个函数定义内部的返回值。
  # 返回一个表达式。
  def func():
      return 1 < 2 # True。返回一个表达式
  result = func()
  print(result) 
  # 不写return默认返回None(空)
  def func():
      a = 10
      b = 20
      sum = a + b

  result = func()
  print(result)
  # 返回多个结果
  def func():
      return 1,'two',['haha', 'jay']

  r1,r2,r3 = func()  # 1 two ['haha', 'jay']。返回多个结果
  print(r1,r2,r3)


  ######################
  def func():
      return 1,'two',['haha', 'jay']

  result = func() # (1, 'two', ['haha', 'jay'])。使用一个变量接收多个返回值,多个返回值会被封装到一个元组中
  print(result)

  return还有一个作用是作为函数结束位置的标识,return后面的代码不会被执行。当我们去调用函数时,函数内部的程序语句会被执行,一旦执行到return语句时,整个函数的调用就结束了,意味着return后面的程序语句就不会被执行,不会输出。

  #return后面的代码无意义:程序执行到return语句后,表示函数调用结束
  def func():
      return 'Tom'
        print('i love Tom') #会执行吗?不会执行的(报错)!
  func() 

(四)调用内外部函数
 - 调用外部函数

  def outer():
      print('我是外部函数outer')
      def inner():  #  # 内部函数
          print('我是内部函数inner')
  #想要调用inner函数?
  outer()

-调用内部函数 

  # 如何调用inner这个内部函数呢?
  def outer():
      print('我是外部函数outer')
      def inner():   # 内部函数
          print('我是内部函数inner')
      return inner #返回的是内部函数名,不加括号的!

  result = outer() # outer() == inner, result == inner
  result() # inner()
 # 返回函数调用(了解)
  def outer():
      print('我是外部函数outer')
      def inner():   # 内部函数
          print('我是内部函数inner')
      return inner()  # return None。加了括号,返回的是内部函数的调用!相当于调用了内部函数。
  outer()  

- 为什么用return,不用print,在一个函数中用到另一个函数所实现的功能,会用到另一个函数的返回值,就需要return来返回。 

  def my_add(a, b):
      return a + b


  def mix_op(num):
      ret = my_add(10, 20)  # 调用my_add函数。return返回:a + b的值。
      return num * ret


  my_ret = mix_op(99)
  print(my_ret)

(五)函数参数

增加函数的通用性

# 定义一个没有形参的函数可以计算出两个数据的和
  def my_add():
      num1 = 1
      num2 = 2
      return num1 + num2
  result = my_add()
  print(result)
  #局限性:只可以计算指定两个数的和,无法实现具有较高的通用性
  # 定义一个有形参的函数可以计算出两个数据的和:具有更强的通用性
  def my_add(num1,num2): #num1=5,num2=9
      return num1 + num2
  
  result = my_add(5,9)
  # 函数调用的作用:1.实参给形参传值;2.执行函数内部的程序语句。
  print(result)

绝大多数函数在定义的时候需要接收一定数量的参数,然后根据实际调用时提供的参数的不同,输出不同的结果。注意将函数内部的参数名字,定义得和外部变量的名字一样是一种不好的习惯,它容易混淆思维,甚至发生错误。

参数的两种称谓

  • 形参(形式参数)

    • 函数定义时,制定的参数叫做形参

  • 实参(实际参数)

    • 函数调用时,传递的参数叫做实参

  • 而我们通常讨论的参数,指的都是形参

参数类型

参数的不同种类

  • 定义函数时,参数的名字和位置确定下来,函数的接口就固定了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python函数的参数定义灵活度非常大。除了正常定义的位置参数外,还可以使用:

    • 位置参数(重点)

    • 默认参数

   1.位置参数

        也叫必传参数或者顺序参数,是最重要的、也是必须在调用函数时明确提供的参数!位置参数必须按先后顺序,一一对应,个数不多不少地传递!

  def add(a,b,c):
     return a+b+c
  
  x = y = 8  # 相当于:x = 8, y = 8, x = 8
  r1 = add(x,y,x)
  r2 = add(4,5,6)
  print(r1,r2)  # 24 15

        上面例子中的a,b,c就是位置参数,我们在使用add(4, 5, 6)调用时,就是将4的地址传给a,5的传给b,6的传给c的一一对应传递。类似add(4, 5, 6, 7)、add(4)这种“画蛇添足”、“缺胳膊少腿”和“嫁错郎”类型的调用都是错误的。

        注意: Python在做函数参数传递的时候不会对数据类型进行检查,理论上你传什么类型都可以!

  def add(a,b,c):
      return a+b+c
  
  add(1,2,'haha')

但是,上面的add函数,如果你传递了一个字符串和两个数字,结果是弹出异常,因为字符串无法和数字相加。

  • 这就是Python的弱数据类型和动态语言的特点。在简单、方便的时候,需要你自己去实现数据类型检查。

2.默认参数

在函数定义时,如果给某个参数提供一个默认值,这个参数就变成了默认参数,不再是位置参数了。在调用函数的时候,我们可以给默认参数传递一个自定义的值,也可以使用默认值。

  def power(x,n=2): #x是位置参数,n是默认参数
      return x * n
  
  power(10)
  power(10,4)

- 上面例子中的n就是个默认参数。默认参数可以简化函数的调用,在为最常用的情况提供简便调用的同时,还可以在特殊情况时传递新的值。

- 默认参数的注意事项:
  - 默认参数必须在位置参数后面!  
  - 使用参数名传递参数

    def myAdd(a=20, b):  # 错误。默认参数必须在位置参数后面,否则报错。
        return a + b   
    
    myAdd(10, 50)
        
    def myAdd1(a, b=20):  # 正确。默认参数必须在位置参数后面,否则报错。
        return a + b    
    
    print(myAdd1(10))
    def student(name, sex, age, classroom='101', tel='1323333333', address='...'):
        # pass  # 函数体:pass表示一个空实现
        return (name, sex, age, classroom, tel, address)
    
    
    # 下述函数调动是否可以?
    a = student('jack', 'male', 17)  # 正确
    b = student('tom', 'male', 18, '102', '666', 'Beijing')  # 正确
    c = student('marry', 'female', 18, '102', address='SH')  # 正确
    d = student('mary', 'female', 'Bj', age='20')   # 位置错误
    print(a, '\n', b, '\n', c, '\n', d)

函数案例:

  # 将一个列表中所有的奇数进行计数
  alist = [1,2,3,4,5,6,7,8,9,10]
  items = [3,8,5,7,6,2,1]
  
  def op_func(params): #params = items
      count = 0 #计数器,用来记录找到奇数的个数
      for i in params:
          if i % 2 != 0: 
              count += 1
      return count
  
  
  ret = op_func(alist)
  print(ret)  


     进一步改进:

  # 将一个列表中所有的奇数进行计数
  alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  items = [3, 8, 5, 7, 6, 2, 1]

  a_list = []  # 定义一个空列表,用来接收奇数。
  def op_func(params):  # params = alist或items
      count = 0  # 计数器,用来记录找到奇数的个数
      for i in params:
          if i % 2 != 0:
              count += 1
              a_list.append(i)  # 把符合条件的数据(奇数)添加到a_list的列表里。
      return count

  ret = op_func(alist)
  print(ret, a_list)  # 5 [1, 3, 5, 7, 9]

类和函数的区别:

函数可以看作一种工具,类可以看作一种模板,类里面不仅有函数,还有很多属性。类比函数的功能要多一些
 

用Python实现斗地主游戏(终端版) 马上就要过年了 大家也都放假了吧 过年必不可少的活动 打牌! 今天带大家来写一份斗地主 (又是好多天没怎么更新,忙成狗啊) 那么实现一个斗地主呢 我们肯定要先完善卡牌系统 from collections import Counter import numpy as np import itertools def cmp_to_key(mycmp): 'Convert a cmp= function into a key= function' class K: def _ 阅读详情

相关推荐

spm FMRI 各种小问题合集

预处理 1、预处理结果从normalize之后开始头歪、变形 问题描述:如下图 原因:DICOM2NIfTI时必须检查对应的T1像。下面是两种错误形式,第一种容易发现,第二种容易忽视,大脑失状位左右颠倒。 解决:重新转了一回格式,建议用SPM fmri进行格式转换。之前是用MRIconvert转换的,用了两台电脑,有的T1结果是对的,不确定什么原因产生的错位,操作都是一样的。 2、Check reg大脑图片边缘出边框 问题描述: 原因:应该是图片排版导致的,单独check就会发现大脑是全的。 解决

weixin_44669441的博客 1675

python中的函数

Python中的函数是一段可重复使用的代码块,可以接受输入(参数),并且可以输出结果。使用函数可以将复杂的逻辑代码分解成小块,使得程序更加清晰、易读、易于维护。# 函数体目前我们所遇到的问题:1.我们现在所写的代码冗余度较高,需要重写代码,2.目前所写的代码兼容性太差。函数其实就是一个工具箱,什么时候使用就拿出来使用,内部封装了一些功能,需要哪里就使用哪里。1.函数必须先定义后调用,没有定义的函数一定是不能调用的。2.函数在定义阶段,只能检测出语法是否错误,不会键检测逻辑会不会有问题。

weixin_49210718的博客 291

SoC验证新思路:除了UVM仿真,你还可以试试Cadence JasperGold的形式化验证

本文深入探讨了Cadence JasperGold形式化验证在SoC设计中的创新应用,对比传统UVM仿真验证,详细解析了其数学穷尽性验证优势。通过实战案例展示了JasperGold在总线协议、时钟域交叉等关键场景的验证方法,并提供了混合验证流程设计与效能优化方案,帮助工程师提升验证效率30%以上。

weixin_30566063的博客 120

python-有关自定义函数的基础知识

Python自定义函数是一种编程中非常常见和重要的概念。本篇文章将详细介绍函数的定义、调用、参数的传递、返回值、变量的作用域、递归等方面的知识,并通过题目、答案和解释等形式进行实例演示。

万物复苏101的博客 909

状态机设计与实现( stm32小车避障为例)

本文以STM32小车避障为例,介绍了状态机设计与实现方法。首先阐述了状态机的事件驱动特性、清晰结构和易扩展优势,并给出硬件组成框架。核心实现部分展示了状态枚举定义、状态转移图和主循环框架,通过switch-case结构实现状态切换。关键状态示例包括前方扫描和转向决策逻辑,通过传感器数据驱动状态转移。总结指出状态机设计需定义枚举状态、实现状态函数、使用switch跳转并更新全局状态。文章最后声明内容为学习笔记,欢迎读者指正交流。全文结构清晰,代码示例具体,为嵌入式系统状态机设计提供了实用参考。

2302_80219536的博客 1046

3D高斯溅射融合Gabor滤波器:频率感知如何提升神经渲染效率与质量

在计算机视觉与图形学领域,3D场景重建旨在从多视角图像中恢复真实世界的三维结构与外观。其核心原理是通过优化场景表示,使渲染出的二维图像与输入照片尽可能一致。传统方法在效率与细节保真度间常面临权衡,高频细节(如精细纹理、锐利边缘)的重建尤为消耗算力。频率感知技术为此提供了突破方向,它借鉴信号处理思想,将场景分解为不同空间频率的成分进行针对性建模。Gabor滤波器作为经典的频率-方向分析工具,能有效刻画纹理的局部频域特征。将Gabor的频率选择性与3D高斯溅射(3DGS)这一高效显式表示结合,构成了神经Gabo

weixin_33087827的博客 272

main函数及其参数

main称为主函数,是C规范指定的编译器识别的默认程序入口。其余函数均由main函数或其它一般函数调用。 main函数可以是无参函数,也可以是有参函数。对于有参的形式来说,就需要向其传递参数。但其它任何函数都不能调用main函数。 C/C++语言中的main函数,经常带有

mal327的专栏 1150

嵌入式面经篇八——进程&线程

记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

明天你好的博客 1854

函数getopt(),及其参数optind

getopt被用来解析命令行选项参数。 转载地址:http://hi.baidu.com/xlt1888/blog/item/703148383008492670cf6c2d.html #include       extern char *optarg;  //

leo_wanta的专栏 924

智能车图像处理14-进阶篇6--坡道的判定

这篇文章主要讲述智能车图像处理中 : 如何判断坡道

taiyuezyh的博客 9226

15、分布式查询处理详解

本博文深入探讨了分布式环境下的查询处理与优化技术。从查询处理的基本概念出发,分析了在分布式系统中执行查询所面临的额外挑战,并通过实例比较了不同的执行策略。文章详细介绍了查询优化的组成要素,包括搜索空间、成本模型和搜索策略,同时涵盖了查询处理的多个层次以及数据本地化的核心方法。此外,还讨论了连接排序优化、分布式成本模型以及多种查询优化方法,如静态优化、动态优化和混合优化。最后,提出了自适应查询处理的概念,旨在提高分布式查询的灵活性和效率。通过综合应用这些技术,可以有效提升分布式数据库的查询性能,降低通信和计算

gan8painter的博客 73

函数参数二:不同种类型函数参数及其调用

#-*-coding:utf-8-*- ''' Created on 2016年3月24日@author: Zroad '''#1、位置参数,从左至右进行匹配 def f1(a,b,c): print a,b,cf1(3,2,1) #3 2 1 f1(19,9,29) #19 9 29#2、关键字参数:通过参数名进行匹配 def f2(a,b,c): print a,b,cf2(c=

u010039733的专栏 740

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。1、Windows11别忘记打开声音2、可能有一定延迟,因为是通过网络传输的。3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧!

jiexijihe945的博客 4530

【SGDRegressor函数及其参数详解】

属于scikit-learn的模块,该模块提供了各种线性模型用于回归和分类任务。它采用SGD算法来优化平方损失函数,从而为线性回归提供了一种灵活的方法。

武帝为此的博客 5199

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python函数及其参数

pythonpython函数及其参数位置参数默认参数小结可变参数关键字参数命名关键字参数参数组合(函数--参数)小结 python函数及其参数 位置参数 假如说我们需要计算一个x2的函数 def power(x): return x * x 对于这个power(x)函数,参数x就是一个位置参数 而我们在调用这个power函数时,就必须向其传入有且仅有的一个参数x >>> power(3) 9 >>> power(4) 16 以上是计算x2的,那计算xn呢 代码

hleisurely的博客 404

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

第 12 函数参数及其对象使用

函数的参数分两类 1、定义阶段函数内指定的参数称之为形式参数,简称形参 形参就相当于变量名 2、调用阶段括号内传入的值称之为实际参数,简称实参 实参就相当于变量值 调用函数时会将实参的值绑定给形参,变量只能在函数内用 ...

weixin_45591980的博客 196

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python学习——函数及其参数

    函数   函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。严格来说python只有函数,没有过程,人们理解的函数都是带有return的,而过程没有,但python函数可以无return,但它依旧会返回一个值--None。我们都知道Python提供了许多内建函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定...

小白一直白 640

函数及其参数应用

函数 函数就是具有某个具体功能的工具,函数可以帮助我们提高开发效率,避免代码过于繁琐,提高程序等的扩展性。 如何定义? 关键词:def 规则:函数名的命名规则与变量名一致,不能以关键字命名(*****),命名要做到见名知意。 # 函数在定义的时候只检测函数体的语法,不执行函数的代码。 ***调用函数的固定格式:函数名() # 函数名只要遇到括号就会立刻执行函数体代码; ...

Huziyu940421的专栏 425

C++ main()函数及其参数

http://blog.youkuaiyun.com/veiny/article/details/784757 main()函数及其参数 C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例: int main(int argc, char *argv[]) 第一个参数argc,指明有多少个参数将被传递给主函数main(),真正的参数

franktan2010的专栏 518

python的函数及其参数

函数 函数参数: 1.位置参数又称必选参数 传递参数的时候,必须按照函数定义的顺序以及个数来进行传参。 2.关键字参数 指传递参数的过程中,通过键值对的方式直接给形参指定具体的值,使用这种方式进行传参,可以清除位置关系 关键字参数与位置参数 可以同时存在,但是,若同时存在的时候,位置参数要写在前面 关键字参数要写在后面。 写在参数列表前面的形参若需使用关键字传参, 那么后面的参数一定也要使用关键字...

xiaoxiaozhang3的博客 264

python 函数参数逗号不报错_python学习——函数及其参数

函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。严格来说python只有函数,没有过程,人们理解的函数都是带有return的,而过程没有,但python函数可以无return,但它依旧会返回一个值--None。我们都知道Python提供了许多内建函数,比如print()。但我们也可以自己创建函数,这被叫做用户自定义函数。一、定义一个...

weixin_42514949的博客 475

Python函数及其参数

定义函数def>>> def MyfirstFunction():print('第一个函数')>>> MyfirstFunction()第一个函数函数的参数>>> def MySecondFunction(name):print(name + 'IloveYou')>>> MySecondFunction...

weixin_34319640的博客 72

listen函数及其backlog参数的含义及实验验证

listen函数仅由TCP服务器调用,它做两件事情 (1)当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字。listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求。调用listen导致套接字从CLOSED状态转换到LISTEN状态。 (2)本函数的第二个参数规定了内核应该为响应套接字排队...

weixin_42250655的博客 972

【Python基础】之函数及其参数

1.函数定义 def 函数名 (): 函数体 形式参数(非必须) 返回值(非必须) 2.函数的参数(传入方式) 2.1形参与实参 形式参数:函数定义时,定义的参数;实际参数:函数运行时传入的参数 2.2默认按照顺序的传入方式 #定义函数 def func(a, b): pass #执行函数 按顺序传入,a=1,b=2 func(1, 2)# a=1,b=2 2.3...

lincoco49的博客 2130
上一篇: 如何使用Markdown编辑器
下一篇: 文件操作及练习
天*天
博客等级 码龄3年 27粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值