函数和参数方法

函数的作用

函数存在的价值:当一个功能需要反复使用的,如果没有函数,每次需要这个功能就必须把实现这个功能的代码写一遍。如果有函数,
实现功能对应的代码只需要写一遍(封装成函数),然后再每次需要这个功能只需要调用函数就行
def sumM(num):
    sum1 = 0
    for i in range(1, num + 1):
        sum1 += i
    print('和:', sum1)

这样就书写了一个函数,表示求这个数到1直接的所有数只和

函数

1.什么是函数(机器)
函数就是实现某一特定功能的代码的封装。
(函数就是将实现某一个或者莫一类功能的代码打成一个包,以后再需要这包中的这段代码对应的功能的时候不要重新写这段代码,而是使用封装了这段代码的函数)
max() 本质也是函数
2.函数的分类
根据这个函数是由谁创建的,我们将函数分为系统函数和自定义函数两种
1) 系统函数(别人已经造好的机器) - 由系统创建的函数(Python本身就创建好的函数),列如:print、input都是函数

print()

2)自定义函数(自己造的机器) - 由程序员自己创建的函数
3.定义函数(造机器)
语法:

def 函数名(形参列表):
函数说明文档
函数体

说明:

1)def - 关键字:固定写法
2)函数名 - 由程序员自己命名;
两个要求:是标识符;不是关键字。
三个规范:见名知义(看到函数名就大概知道函数的功能);
所有的字母都小写,多个单词下划线隔开;
不使用系统的函数名、类名、模块
3)(): - 固定写法
4)形参列表 - 以’变量名1’,‘变量名2’,‘变量名3’…的形式存在,根据情况变量的数据可以为0(每一个变量就是一个形参)
形参的作用:将函数外部的数据传递到函数里面。
确定形参的方法:看实现函数的功能需不需要额外的数据,需要多少个额外的数据
5)函数说明文档 - 多行注释(相当于生活中机器的说明书)
6)函数体 - 结构上,和def保持一个缩进或者多条语句
逻辑上,函数体就是实现函数功能的代码。

练习3:定义一个函数,删除列表中所有的空值
(包括None,和其他空值(比如空字符串、空列表、空元组等))
def list1(li):
    for i in range(len(li) - 1, -1, -1):
        if not i and i != 0:
            pass
        else:
            li.pop(i)
    print(li)

调用函数

1.调用函数(使用函数 - 使用机器)
语法:

函数名(实参列表)

说明:
1)函数名 -需要哪个函数对应的功能,就调用哪个函数;想要调用哪个函数就写哪个函数的函数名
注意:函数名必须是已经定义过的函数的函数名
2) () - 固定写法
3) 实参列表 - 以’数据1’,‘数据2’,‘数据3’…的形式存在,这儿的每个数据都是一个实参(实参对应的数据可以是任何有结果的表达式)
实参是用来给形参赋值,在提供实参的时候要保证和形参一一对应

            变量名1,变量名2,变量名3,.... =数据1,数据2,数据3,.....  -->形参 = 实参

        重要结论:定义函数不会执行函数体,调用函数的时候才会执行函数体
2.函数调用过程

每次在调用函数的时候,他的执行步骤:
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值,传参的时候必须保证每个形参都有值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置,接着往后执行

def func4(x, y, z):  # x=100,y=200,z=300
    print(f'x:{x}', f'y:{y}', f'z:{z}')


func4(100, 200, 300)
print('end')

函数的调用

1.位置参数和关键字参数
根据实参的提供方式将实参分为位置参数和关键字参数两种
1)位置参数:以’实参1’,‘实参2’,‘实参3’…的形式存在,让实参和形参从位置上一一对应
2)关键字参数:以’形参1=实参1’,‘形参2=实参2’…的形式存在,通过’='将实参和形参对应
注意:位置参数和关键字参数可以一起用,但是必须保证位置参数在关键字参数前面
def func4(x, y, z):
    print(f'x:{x}', f'y:{y}', f'z:{z}')


func4(100, 200, 300)  # x=100,y=200,z=300
func4(200, 100, 300)  # x=200,y=100,z=300

func4(x=100, y=200, z=300)  # x=100,y=200,z=300
func4(y=200, x=100, z=300)  # x=100,y=200,z=300
# func4(100, x=100, y=300)  报错
2.参数默认值
定义函数的时候可以通过’形参名=数据’的方式,给形参赋默认值;
在调用函数的时候,有默认值的参数可以不用传参。
注意:定义函数的时候,如果一个函数有的参数有默认值有的参数没有默认值,没有默认值的形参必须在有默认值的形参的前面
def func2(x=10, y=20, z=30):
    print(f'x:{x}', f'y:{y}', f'z:{z}')


func2()  # 不传参
func2(100)
# 如果想要跳过前面有默认值的参数,直接给后面的参数赋值,使用关键字
func2(z=200)
# def fun0(x=3,y,z):      报错
#     pass
3.参数类型说明
没有默认值参数的类型说明:直接在形参后面加’:类型名’;
有默认值的参数,默认值数据对应的类型就是这个形参的类型
def func6(x: str, y='') -> str:
    x.strip()
    return y.strip()
补充:函数名(形参列表) 后加->类型, 表示给别人看函数返回值是什么
4.*对应的不定长参数
1)参数个数不确定可以使用不定长参数
一个函数只能会有一个*
定义函数的时候,如果在某一个形参前面加*,那么这个形参就会变成一个不定长参数,他可以接受多个实参(0个,1个,2个…)
带*的不定长参数的本质是一个元组,他接受到的所有的实参都是这个元组中的元素
def sumN(*num):  # 可以不写参数也不会报错
    sum1 = 0
    for i in num:
        sum1 += i
    print(sum1)


sumN()
sumN(10, 20)
sumN(10, 20, 30)
2)定义函数的时候单独使用*
如果定义函数的时候,形参列表中有一个独立的*,调用函数的时候*后面的所有的形参必须使用关键字参数传参
def func7(x, *, y, z):
    pass


# func7(10, 20, 30)    报错
func7(10, y=20, z=30)   #后面的y,z只能用关键字传参
sorted([10, 45, 34, 14], reverse=True)  # sorted后面的reverse就是必须用关键字参数
def func8(x, *y, z, t):
    pass


func8(10, 27, 34, 49, z=54, t=61)
# 实则z和t也只有用关键字传参才能调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的构造函数和构造方法是同一个概念。构造函数是一个特殊的方法,用于创建和初始化对象。它与类名相同,没有返回类型,并且在使用`new`关键字创建对象时自动调用。 构造函数的主要作用是初始化对象的成员变量或执行一些必要的操作,以确保对象在创建时处于合适的状态。它可以接受参数来初始化对象的属性。 在Java,如果没有显式定义构造函数,编译器会自动提供一个默认的无参构造函数。但是,如果我们定义了一个或多个构造函数,则编译器不会再提供默认构造函数。 构造函数可以重载,即在同一个类可以定义多个构造函数,它们具有不同的参数列表。这样可以根据不同的需求来创建对象。 下面是一个示例,演示了如何定义和使用构造函数: ```java public class MyClass { private int num; // 无参构造函数 public MyClass() { num = 0; } // 带参构造函数 public MyClass(int value) { num = value; } // 获取num的方法 public int getNum() { return num; } } public class Main { public static void main(String[] args) { MyClass obj1 = new MyClass(); // 调用无参构造函数 System.out.println(obj1.getNum()); // 输出: 0 MyClass obj2 = new MyClass(10); // 调用带参构造函数 System.out.println(obj2.getNum()); // 输出: 10 } } ``` 在上面的示例,`MyClass`类定义了两个构造函数:一个是无参构造函数,另一个是带参构造函数。通过使用不同的构造函数,我们可以创建具有不同初始值的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值