• 【从零学Python_1.5】自定义函数和类


    函数格式: 

    def  函数名 ( 参数 ) :

            函数体

    1. # 自定义函数
    2. def func(a, b):
    3. return a + b
    4. # 调用函数
    5. func(1, 2)

    函数参数:

    参数类型:

    • 可变类型参数:在函数内部对传入参数的修改会影响到外部变量。
    • 不可变类型参数:在函数内部对传入参数的修改不会影响到外部变量。
    1. def func1(num):
    2. num * 10
    3. num1 = 10
    4. func1(num1)
    5. print(num1) # 10
    6. def func2(lst):
    7. lst[0] *= 10
    8. lst1 = [10]
    9. func2(lst1)
    10. print(lst1[0]) # 100

    默认参数:

    设置默认参数时,必选参数在前默认参数在后

    1. def func3(num1, num2=10):
    2. print(num1 + num2)
    3. func3(1, 2) # 3
    4. func3(1) # 11

    可变参数:

    可变参数/不定长参数,可以输入任意个参数,在函数内作为元组Tuple使用

    1. def func4(*nums):
    2. sum = 0
    3. for num in nums:
    4. sum += num
    5. return sum
    6. print(func4(1, 2, 3)) # 6
    7. print(func4(1, 2, 3, 4)) # 10

    关键字参数:

    指定参数名传参,不一定按固定顺序

    1. def func5(name, age):
    2. print(name, age)
    3. func5(age=18, name="XiaoMing")

    函数返回值:

    函数都有返回值,默认返回None

    匿名函数:

    Lambda表达式

    1. func6 = lambda a, b: a + b
    2. print(func6(1, 2)) # 3

     


    类格式:

    class 类名(基类):

    默认自动继承object类。 

    1. class TestClass:
    2. name = "Test Class"
    3. # 实例化
    4. test = TestClass()
    5. print(test.name)

    类的属性:

    • 公有属性:在类中和类外都可以调用,属性默认为公有属性;
    • 私有属性:只能在类内调用,属性命名以双下划线"__"开始;
    • 内置属性:系统自带属性,以双下划线开头,且以上下划线结尾。

    类的函数:

    • 公有函数:可以在类内调用,也可以外部通过实例调用,函数默认为公有函数;
    • 私有函数:只能在类内调用,函数命名以双下划线"__"开始;
    • 类函数:可以在外部通过类名或实例调用,被classmethod函数调用,或使用@classmethod修饰;
    • 静态函数:可以类内调用,也可以在外部通过类名或实例调用,被staticmethod函数调用,或使用@staticmethod修饰,不需要self语句。
    1. class TestClass:
    2. publicname = "PublicName"
    3. __privatename = "PrivateName"
    4. def testfunc1(self):
    5. print(self.publicname)
    6. def testfunc2(self):
    7. print(self.__privatename)
    8. def __testfunc3(self):
    9. print(self.publicname)
    10. def __testfunc4(self):
    11. print(self.__privatename)
    12. def testfunc55(self):
    13. print(self.publicname)
    14. testfunc5 = classmethod(testfunc55)
    15. @classmethod
    16. def testfunc6(cls):
    17. print(cls.publicname)
    18. def testfunc77():
    19. print("static func")
    20. testfunc7 = staticmethod(testfunc77)
    21. @staticmethod
    22. def testfunc8():
    23. print("static func")
    24. testfunc7()
    25. testfunc8()
    26. # 实例调用
    27. testclass = TestClass()
    28. print(testclass.publicname)
    29. testclass.testfunc1()
    30. testclass.testfunc2()
    31. testclass.testfunc5()
    32. testclass.testfunc6()
    33. testclass.testfunc7()
    34. testclass.testfunc8()
    35. # 类名调用
    36. TestClass.testfunc5()
    37. TestClass.testfunc6()
    38. TestClass.testfunc7()
    39. TestClass.testfunc8()

  • 相关阅读:
    “高强度”干活还不够,马斯克又出“新招”:写一页绩效自证价值,以获得股票!...
    [附源码]计算机毕业设计springboot路政管理信息系统
    Cortex-M系列处理器偶发死机定位方法
    一篇文章带你掌握性能测试工具——Jmeter
    图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂
    Java | Leetcode Java题解之第125题验证回文串
    抽象类和接口概念和区别
    精品基于Uniapp+SSM实现的Android的校园新闻管理系统实现的App
    基于ADuCM4050的Power模式切换、外部中断(睡眠唤醒)初始化及回调函数定义
    API集成测试:SpringBoot+Junit
  • 原文地址:https://blog.csdn.net/qq_39108767/article/details/125248123