精华内容
下载资源
问答
  • 2019-07-23 13:46:02

    函数定义的一般形式

    1.无参函数
    定义无参函数的一般形式如下:
    类型说明符 函数名()
    {
    声明部分
    语句
    }
    类型说明符,指明了本函数的类型,函数的类型实际上是函数返回值的类型。该类型说明符与前面介绍的各种说明符相同。在很多情况下都不要求无参函数有返回值,此时函数类型说明符可以写为void函数名是由用户定义的标识符,函数名后面有一个空括号,其中无参数,但括号不可少。{}中的内容称为函数体。定义一个无参函数hello
    Void hello()
    {
    Printf(“hello mingri!”);
    }

    2.有参函数

    定义有参函数的一般形式如下

    类型说明符 函数名 ()

    声明部分
    语句

    在“形式参数表列”中给出的参数称为形式参数,它们可以是各种类型的变量,同时要对这些变量给予类型说明,各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。下面定义一个有参函数实现两数相加求和,并将求出的和作为返回值返回。

    Int add(int x,int y)
    {
    Int sum;
    Sum =x+y;
    Return sum;
    }

    第一行说明add函数是一个整形函数,其返回的函数值是一个整数。形参为x,y,这里也分别对x,y进行了类型说明,均为基本整型。X和y的具体值是由主调函数在调用该函数时传送过来的。在{}中的函数体内,除形参外还定义了一个变量sum,该变量仍为基本整型。Add函数体中的return语句是把sum的值作为函数的值返回给主调函数。有返回值函数中至少应有一条return语句。

    3.空函数

    定义空函数的一般形式如下:
    类型说明符 函数名()
    {}

    空函数就是什么也不做,没有什么实际的作用。空函数既然没有什么实际功能,那为什么要存在呢?原因是空函数所处的位置是要放一个函数的,只是这个函数现在还未编好,用这个空函数先占一个位置,以后用一个编好的函数来取代它

    更多相关内容
  • 问:怎么样正确定义一个函数呢? 答:是的,定义一个函数很简单,但是正确定一个函数这就有道道了。首先说一下我们最常见的两种形式:(注意是没有访问限制这么一说的) Function name(){ //code } Function ...

    问:怎么样正确定义一个函数呢?

    答:是的,定义一个函数很简单,但是正确定一个函数这就有道道了。首先说一下我们最常见的两种形式:(注意是没有访问限制这么一说的)

    Function name(){

    //code

    }

    Function name($arg1, $arg2){

    //code

    }

    这两种都是我们常见的,区别就在于有没有参数。是的,参数是函数的主要区别。我们知道php是一种弱类型语言,所以在函数定义上和强类型语言有着明显的差别,比如就没有函数重载,主要原因就是参数的类型可以多种,而不像强类型语言那样对于参数的每一个类型,都要写一个对应的函数。所以php函数中的参数天生就能接纳不同类型的参数,而伪类型就是用来表达有多种类型的意思,目前常用的伪类型有mixed,number,callback这几个。如果想表达参数接受多种类型就可以使用伪类型,直接标记在说明文档中即可。至于php函数参数的类型要求,事实上php中所有数据类型都可当做函数参数--标量,复合类型,null,资源型,以及引用型(即&)都可以。

    这里我们先就参数个数来聊一下不同函数的定义差异。

    • 没有参数直接空括号就行,这个没有什么异议。
    • 我们主要对有参数的进行辨别。

    如果设定了参数,且没有对应默认值的,如果调用时不传递,会发生致命错误

    在实际函数调用的时候,严禁间隔参数(用两个,空出来)表达故意不传该参数,这种会直接报错

    并且php的实参在传递过程是顺序传递的,不支持指定参数名传递。(框架内支持指定参数名传值,一般都是通过反射机制来实现

    我们先从有没有对参数类型进行限制。这里有一个规定在php中,就是在php7之前是不允许对标量(整形,浮点型,字符串,布尔型)进行限制,trait也不行。可以对类,接口,对象实例(self),数组,回调进行限制。可以通过使用默认值null添加对null的兼容。

    如果对函数参数进行了类型限制,若传的类型不一致,会导致致命错误。

     

    关于参数个数不足的问题总结起来就一句话,如果某个参数在调用时没有参数(不管是传值还是默认值),那么一定会报错。理论上默认值是放在任何位置都行,鉴于调用方法和使用习惯,推荐将不带默认值的参数放左边,带默认值的放不带默认值的参数右边。不带默认参数的必须得传值,如果在必传值的参数列表中夹杂着默认值,也就意味着默认值无意义了,因为它用不着了,它也必须传值了。

    默认值是解决实参数量少于形参数量的,还一种是实参数量大于形参数量的。Php函数是无条件接受所有实参的并按照顺序赋值给形参的,那剩下的怎么办?的确,他们没有像那些排在前面的参数一样,有名有姓。不过他们比较幸运的是,所有的实参都有同一个归宿,用func_get_args()获取所有的实参放到一个数组里面。这样就能处理这些参数了。

     

    这里我们要对函数参数的特殊类型单独说一下,引用型就不说了,说一下参数是回调类型的,也就是参数是一个函数或者方法的这种情况。为什么要传一个函数功能体给一个函数呢?很显然,函数功能不全,需要外部帮助嘛。那帮助的方法有哪些呢,我们来说一下。首先我们要知道如何调用一个函数,如果知道函数的名字直接带上括号和需要的参数直接调用就可以。是的,就是这么简单,这有一个前提就是知道函数名,这就是个字符串啊,所以这样回调就很easy了,直接把函数名传给函数当参数(callback是个伪类型,这样实际就是string),然后在函数内就可以使用变量函数(如果你不知道函数变量是啥,自行百度吧)了。如果你想在在提供函数名的时候一并提供参数,有个专门的函数叫call_user_func_array()这玩意本身就是一个回调函数,接受两个参数,第一个是函数名称字符串,第二个是参数数组,这个数组会按顺序传给回调,至于个数最好能一样,超了没关系,少了可能就出问题了。这两除了参数问题区别,也可以从发起者来看区别。变量函数是人启动的,call_user_func_array()是系统启动,有自动和手动的区别。下面我们再来说一下没有函数名字的咋办?一样,还是通过变量函数来完成,本质就是将无名函数(匿名函数或叫闭包)传给形参,然后在函数体内就形成了变量函数,剩下的就是变量函数的那一套了。所以直接将整个函数定义传给函数就行,如果你觉得样式不好看,可以先付给一个变量(实际这就是函数变量了),然后再传给形参就行了。

     

    这里提到了call_user_func_array()这个函数,其实它的作用很大,提到他不得不提另一个函数call_user_func(),他俩是兄弟俩,很容易迷糊,所以放一起让大家有所区分。

    对于普通的函数来说

    Call_user_func()函数参数数量不定,这取决于回调函数的参数个数。不过有个硬指标就是,第一个参数必须是函数名称,剩下的参数列表和回调函数的参数列表是一样的

    Call_user_func_array()函数的区别就是换了种方式传参数。他只有两个参数

    第一个参数是函数的名称,第二个参数是回调函数的参数数组

     

    调用类的方法(包括静态方法实例对象方法

    Call_user_func()函数对第一个参数变化,别的没有变化,就是方法名。有两种形式,第一种是字符串(类名::方法名),不用说就知道这是对静态方法的调用。另一种是数组形式,数组包含两个元素,第二个是方法名,如果是对象方法,第一个就是对象,如果是静态方法,第一个就是类名这里要对数组形式的使用类名调用方法的形式进行一下提醒,他一般是用来调用静态方法的,如果用在非静态上,5.3之前是没问题的,因为php会把它当做静态的方法,5.3之后就会出现strict错误了(这个和重写子类方法参数个数不一致的错误级别一样),但可以通过忽略级别隐藏。

    Call_user_func_array()函数就是和之前一样,只是改变了参数的传递方式,以数组的形式传递了。

     

    这样关于怎样定义一个正确函数,以及怎么调用一个函数,甚至怎么回调函数和类中方法也讲完了。

    展开全文
  • 定义函数的三种形式

    千次阅读 2020-03-22 15:00:19
    文章目录定义函数的三种形式一、无参函数二、有参函数三、空函数 定义函数的三种形式 一、无参函数 定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名 在函数阶段括号内没有参数,称为无参函数。...

    定义函数的三种形式

    一、无参函数

    定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名

    在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。

    如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。

    def func():
        print('hello nick')
        
    func()  # hello nick
    

    二、有参函数

    在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。

    如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数。

    def sum_self(x, y):
        """求和"""
        res = x+y
        print(res)
    
    sum_self(1,2)  # 3
    

    三、空函数

    当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。

    def func():
        pass
    
    展开全文
  • Python 5 函数

    千次阅读 2020-12-06 10:41:18
    错参考答案:A在调用函数时,可以通过关键字参数的形式进行传值,从而避免必须记住函数形参顺序的麻烦。(1分)A.对B.错参考答案:A自定义函数时,若一个参数带有默认值,那么所有其他参数都必须设置默认值。(1...

    一、判断题(共10小题,10分)

    在Python中,自定义函数的关键字是def。(1分)

    A.对

    B.错

    参考答案:

    A

    形参可以看做是函数内部的局部变量,函数运行结束之后形参就不可访问了。(1分)

    A.对

    B.错

    参考答案:

    A

    在调用函数时,可以通过关键字参数的形式进行传值,从而避免必须记住函数形参顺序的麻烦。(1分)

    A.对

    B.错

    参考答案:

    A

    自定义函数时,若一个参数带有默认值,那么所有其他参数都必须设置默认值。(1分)

    A.对

    B.错

    参考答案:

    B

    函数是代码重用的一种方式。(1分)

    A.对

    B.错

    参考答案:

    A

    在同一个作用域内,局部变量会隐藏同名的全局变量。(1分)

    A.对

    B.错

    参考答案:

    A

    自定义函数时,即使该函数不需要接收任何参数,也必须在函数名后保留一对空的圆括号来表示这是一个函数。(1分)

    A.对

    B.错

    参考答案:

    A

    在自定义函数内部没有办法定义全局变量。(1分)

    A.对

    B.错

    参考答案:

    B

    在自定义函数时,某个参数名字前面带有*符号表示可变长度参数,可以接收任意多个关键字参数并将其存放于一个字典之中。

    (1分)

    A.对

    B.错

    参考答案:

    B

    如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为None。(1分)

    A.对

    B.错

    参考答案:

    A

    一个函数(        )。

    A.必须至少有一个参数

    B.可以没有参数

    C.必须有一个return语句返回一个值

    D.必须有一个return语句返回多个值

    参考答案:

    B

    函数的参数总是出现在(        )中。

    A.方括号

    B.双引号

    C.圆括号

    D.花括号

    参考答案:

    C

    在Python中,对于函数定义代码的理解,正确的是(    )。

    A.必须存在形参

    B.必须存在return语句

    C.形参和return语句都是可有可无的

    D.形参和return语句要么都存在,要么都不存在

    参考答案:

    C

    函数可以改变(    )数据类型的实参。

    A. int

    B. string

    C. list

    D. float

    参考答案:

    C

    参考答案:

    C

    下面(        )应该被定义为一个无返回值函数。

    A.编写一个函数,打印从1到100的整数

    B.编写一个函数,返回一个1到100之间的随机整数

    C.编写一个函数,检查当前秒数是否是一个1到100之间的整数

    D.编写一个函数,将一个大写字母转换为小写字母

    参考答案:

    A

    在一个函数中如局部变量和全局变量同名,则(    )。

    A.局部变量屏蔽全局变量

    B.全局变量屏蔽局部变量

    C.全局变量和局部变量都不可用

    D.程序错误

    参考答案:

    A

    函数头由(        )组成。

    A. def关键字、函数名和冒号

    B. def关键字、函数名、参数表和冒号

    C.函数名和参数表

    D.函数名、参数表和冒号

    参考答案:

    B

    对于下面不完整的程序:

    def f(number):

    #缺失的函数体

    print(f(5))

    缺失的函数体应该是(         )。

    A. return "number"

    B. print(number)

    C. print("number")

    D. return number

    参考答案:

    D

    若一个函数没有返回值,默认情况下,该函数返回(         )。

    A. None

    B. int

    C. double

    D. public

    E. Null

    我的答案:

    A

    题目得分    2

    参考答案:

    A

    下列函数头,正确的是(        )。

    A. def f(a = 1, b):

    B. def f(a = 1, b, c = 2):

    C. def f(a = 1, b =1, c = 2):

    D. def f(a = 1, b =1, c = 2, d):

    参考答案:

    C

    有关函数的说法,(         )是错误的。

    A.函数是对一段代码的命名

    B.函数是代码功能的一种抽象

    C.函数是计算机对代码执行优化的要求

    D.函数是代码逻辑的封装

    参考答案:C

    展开全文
  • 定义函数的方式

    千次阅读 2020-05-09 21:25:19
    定义函数的方式有两种:一种函数声明,另一种是函数表达式。 函数声明的语法是这样的: function functionName(arg0,arg1,arg2){ //函数体 } 关于函数声明,它的一个重要特征是函数声明提升,意思是在执行代码...
  • 函数声明和定义

    千次阅读 2020-08-21 19:26:31
    继续小菜鸡的C++学习之旅 编程中的函数与数学中的函数不一样,编程中...在C++中,main函数即便是初学者也一定见过,它是启动函数,即生产线的开关,它控制总电源,能够给各个函数输送必需的能源和原料,而其他的函数
  • 函数定义def函数名(参数1,参数2,参数3,...):'''函数注释'''函数体return返回的值函数使用的原则:先定义,再调用函数即“变量”,“变量”必须先定义后引用。未定义而直接引用函数,就相当于在引用一个不存在的...
  • 函数调用形式函数名 (实参表列)。C语言可以嵌套调用函数。在调用函数时又调用该函数本身为递归,必须有退出条件。数组元素相当于普通变量,数组名作参数时要求形参和实参必须为类型相同的数组。局部变量只在本函数...
  • 函数 函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。...Python函数(函数定义、函数调用)用法详解 Python 中函数的应用非常广泛,前面章节中我们已经接触过多
  • Python自定义函数基础概念

    千次阅读 2021-01-14 12:21:04
    一、函数定义语法:def 函数名(形参列表):语句块二、函数定义规则1. 函数的名字就是语句块的名称2. 函数名的命名规则与变量名相同(函数名必须是标识符)3. 函数名是一个变量(不要轻易对其赋值)4. 函数有自己的名字空间...
  • 局部变量 局部变量就是定义函数内部的变量,这个变量只能在函数内部使用,即作用域范围只是函数内部,另外,形参也是局部变量。 全局变量 全局变量就是定义函数外部的变量,这个变量在任何函数中都有效,即作用...
  • 函数声明和定义一般都有参数,...以下三种方式声明和定义函数都是正确的。 第一种:常用的,声明和定义函数参数名称均一致。 int add(int a, int b);   // 函数声明 int add(int a, int b)    /
  • 使用 typedef 定义函数指针,更优雅的使用函数指针

    万次阅读 多人点赞 2018-08-24 09:23:56
    简介 关于函数指针的介绍,这里就不做过多说明了,不了解的同学可以...使用 typedef 定义函数指针 通过下面这个例子,我们看看 typedef 是怎么搭配函数指针使用的吧。 int add(int a, int b) { return a + b; ...
  • 1、关于递归函数的描述,以下选项中正确的是A.包含一个循环结构B.函数比较复杂C.函数内部包含对本函数的再次调用D.函数名称作为返回值答案:D答案解析:递归函数是指函数内部包含对本函数的再次调用。2、关于递归...
  • 下面重载乘法运算符的函数原型声明中正确的是: 正确答案: A B D 你的答案: D (错误) MyClass operator *(double ,MyClass); MyClass operator *(MyClass ,MyClass); MyClass operator *...
  • 对于带参数列表的函数,必须从右向左添加默认值   对于带参数列表的函数,必须从右向左添加默认值,也就是说,要为某个参数... //正确 int fun2(int n, int m = 6, int j); //错误 int fun3(int n = 1, ...
  • Java基础之函数定义和格式

    千次阅读 2020-07-04 21:44:27
    } /* 定义函数的格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...) { 执行语句; return 返回值; } 特殊情况: 功能没有具体的返回值。 这时return的后面直接用分号...
  • 1、函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。Shell 函数定义的语法格式如下: [function] funname [()]{ 函数体 [return int;] } 格式1: 简化写法,不写 function 关键字: ...
  • python函数定义与调用

    千次阅读 2019-09-01 13:47:20
    一、如何定义函数: 函数是组织好的,可以重复使用的,用来实现一定功能的代码段。...2、python中函数定义: def funName(parmerslist): "函数__文档字符串" 函数体 return [表达式] #可选,没...
  • 点击查看在MATLAB中运行程序时,显示错误: 此上下文中不允许函数定义。 怎么修改?具体信息答:MATLAB程序运行错误后,切换到MATLAB命令行中,观察命令行中的错误信息,确定错误原因。 1、你可能写了个脚本程序文件...
  • Python函数的基础学习

    千次阅读 2021-02-03 10:14:39
    一、函数分类(1)内置函数。...通过import语句,可以导入标准库,然后使用其中定义函数。(3)第三方库函数。Python社区提供了许多其他高质量的库,如Python图像库等等。下载安装这些库后,通过import...
  • 函数的宏定义

    千次阅读 2019-03-04 07:41:50
    但为什么要为每一个函数定义一个同名宏呢?原因在于在一些反复调用同一函数的场合,编译器可以用函数宏代替函数使之内嵌到程序里,进而避免了因反复调用函数而带来的保存、恢复现场的开支,使程序整体运行更快。 ...
  • 析构函数定义

    万次阅读 多人点赞 2017-12-07 22:02:33
    1.析构函数的定义 析构函数:当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统会自动执行析构函数。...其定义形式为: ~类名(){ 函数体 } 析构函数不返回任何值,没有返回类型,也
  • JavaScript的关键字与函数定义

    千次阅读 2017-08-01 21:00:29
    1.函数定义 JavaScript 使用关键字 function 定义函数函数可以通过声明定义,也可以是一个表达式。 2.函数的使用 1.函数声明 function sum1(n1,n2){...
  • 什么是构造函数和析构函数

    千次阅读 2020-05-29 10:48:53
    1.构造函数 1.1概念 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数...
  • 函数的声明、定义和调用

    万次阅读 多人点赞 2017-08-08 15:33:13
    本博简单介绍一下C语言中函数声明、定义和调用的概念
  • C++函数定义与使用

    万次阅读 多人点赞 2018-03-25 15:30:49
    函数的定义和使用main就是一个函数,它是C++程序的主函数。一个C++程序可以由一个主函数和若干子函数组成。...1.函数的定义1.1函数定义的语法形式类型说明符 函数名(含类型说明的形式参数表){ 语句序列...
  • c语言函数声明格式是什么?

    千次阅读 2021-05-21 07:53:33
    函数声明,不是说明的格式是“函数定义格式”的第一行,然后加 “;”,即:函数类型 函数名称(参数列表);特别地,在函数声明中的参数列表中,不需要给出具体的变量名称,但必须给出每个变量的类型。#includeint ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 409,301
精华内容 163,720
关键字:

下面函数定义形式正确的是