Python基础学习之函数方法实例详解 本文实例讲述了Python基础学习之函数方法。分享给大家供大家参考,具体如下: 前言 与其他编程语言一样,函数(或者方法)是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 python的函数具有非常高的灵活性,可以在单个函数里面封装和定义另一个函数,使编程逻辑更具模块化。 一、Python的函数方法定义 函数方法定义的简单规则: 1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 2. 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 3. 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 4. 函数内容以冒号起始,并且缩进。 5. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 函数demo: def test_method(): test_string = "test" return test_string 方法和函数的区别就是,方法是属于类里面的,可以获取调用类的属性和定义的成员,使用self访问,方法的定义如下: Class A: self.test_string = "test" def test_method(self): return self.test_string 注:如果方法没有使用类成员,则不需要带self,即方法和函数一致,此时也成为静态方法@staticmethod 二、函数和方法的参数类型: 1. 必备参数: 必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样,必备参数定义在函数定义的括号()内。 2. 默认参数: 默认参数在调用方法或函数,不传入该参数时,会使用默认的值,默认值写在(内),必须在必备参数之后,如 def test_method(str, default_str = "hello") 3. 不定长参数: python函数除了可以定义默认参数之外,还可以定义可变参数,如*args和**kwargs: (1) 函数内部可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数,在函数内部,直接把变量 args 看成一个 tuple 就好了; (2) 双星号(**):**kwargs将参数以字典的形式导入,如bar(1,a=2,b=3),在内部kwargs参数就是{'a': 2, 'b': 3}; (3) 对于函数外部带单星号*,外部传入的参数带*号,则在内部则是以解压方式赋给函数的每个参数; 4. 匿名函数: python使用lambda来创建匿名函数: (1)lambda只是一个表达式,函数体比def简单很多; (2)lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去; (3)lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数; lambda的demo: sum = lambda arg1, arg2: arg1 + arg2; 调用: sum(1,2) # 返回3 三、方法的复用和继承: 1. 方法的继承: (1) 如果一个类继承了基类,则需要在这个类的构造函数(__init__())里面调用基类的初始化方法,即添加:super().__init__()来初始化基类; (2) 这个类可以调用基类中存在而本类不存在的方法,这就是子类调用父类的方法,可以直接使用self调用; 2. python函数没有重载功能: 函数重载主要是为了解决两个问题: ①.可变参数类型; ②.可变参数个数。 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的。 对于情况1,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在python中很可能是相同的代码,没有必要做成两个不同函数; 对于情况2,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的; 鉴于情况1跟情况2都有了解决方案,python自然就不需要函数重载了 3. 方法覆盖: 一个类用self调用基类中存在而本类也存在的方法,这时子类方法会优先被调用,替代调用父类的方法,如果要调用父类的该方法,需要用super()参数; 四、Python函数与方法的其他知识: Python常用内置函数: (1) dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用; (2) type()函数,type()只带一个变量参数则返回变量的类型,但是该函数如果带三个参数则可以返回新创建的类对象(动态创建类对象): # 使用type()函数定义类 # 实例方法 def __init__(self, name): # 实例属性 self.name = name # 类方法 @classmethod def study(cls): pass # 静态方法 @staticmethod def cal_student_num(): pass # 元类最大的作用不在于创建一个新的类 A = type( 'A', (object,), { 'role': 'student', '__init__': __init__, 'study': study, 'cal_student_num': cal_student_num }) (3) Python函数中,可以通过声明全局变量(global 变量名)来调用函数外部的变量,也可以通过将外部变量传参的形式传入函数内使用,global的方式会改变外部变量的值; 关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》 希望本文所述对大家Python程序设计有所帮助。