Python3:定义函数(定义private方法以及protected方法,可变参数,静态方法调用)

当前学习借鉴书籍:Head First Python

1.语法

使用def方式定义函数,def 函数名(参数列表) :

2.定义一个计算总数的函数

'''
定义一个函数用于计算两个数相加
'''
def sum(num1, num2):
    return num1 + num2

使用函数

print(sum(5, 6))

结果为:11

3.定义一个具有默认值的函数

在当前的函数列表中使用:变量=defaultvalue的方式设置默认值,如果没有传递这个参数就会使用默认的值

# 定义函数的默认值使用:num=value方式定义默认值,即可用参数
def sum2(num1=0, num=0):
    return num1 + num

调用

print("输出当前的sum2函数的调用:{0}".format(sum2()))
print("输出当前的sum2函数的调用:{0}".format(sum2(1)))
print("输出当前的sum2函数的调用:{0}".format(sum2(1, 2)))

结果:
在这里插入图片描述
使用这个就可以传递参数和不传递参数都可以调用这个函数,不会报错

4.定义一个递归函数处理list中的数据

# 用于打印list中的元素,创建递归函数迭代list中的集合元素
def printList(array):
    if isinstance(array, list):
        for a in array:
            if isinstance(a, list):
                printList(a)
            else:
                print(a)
    else:
        print(array)

调用

strList = [
    "header", ["title", ["h1", ["content"]]]
]
printList(strList)

结果:
在这里插入图片描述

5.定义一个私有的方法:private

python中的定义私有的方法使用:__方法名称,定义私有的属性为:__变量

 def __private_method(self):
        print("这是一个私有的方法:private")

在类的外面调用这个方法:

# 这里报错,AttributeError: 'User' object has no attribute '__private_method',没有这个方法存在
new_user.__private_method()

报错这里报错,AttributeError: 'User' object has no attribute

6.定义一个受保护的方法:protected

python中定义受保护的方法使用:_方法名称,定义受保护的属性为:_变量

 def _protected_method(self):
        print("这是一个受保护的方法:protected")

在类的外面调用这个受保护的方法

# 结果:这是一个受保护的方法:protected
new_user._protected_method()

结果成功!

7.使用@property将一个方法变为变量的方式调用

 @property
    def show(self):
        print("当前的用户名:{0},密码:{1}".format(self.name, self.pwd))

调用结果:

new_user.show

当前的用户名:admin,密码:123456

8.定义可变参数

1.定义可变的集合参数list

# 测试可变参数 *params是用來输出数组变量 ('张三', '李四', '王五')
def vars_func(_param1=None, *params):
    print("_param1={0}".format(_param1))
    print("输出可变参数中的数据:{0}".format(params))

if __name__ == "__main__":
    # 开始测试可变参数的函数
    vars_func("uname","张三","李四","王五")

结果:

_param1=uname
输出可变参数中的数据:(‘张三’, ‘李四’, ‘王五’)

2.定义可变参数:字典


# 用于输出可变的dict, **变量名就表示可变的字典参数,需要使用張三="123456",李四="123456"传入进来
def vars_func1(_param1=None, **params):
    print("_param1={0}".format(_param1))
    print("输出可变参数中的数据:{0}".format(params))

if __name__ == "__main__":
    # 开始测试可变参数的函数
    vars_func1("user",張三="123456",李四="123456")

结果:

_param1=user
输出可变参数中的数据:{‘張三’: ‘123456’, ‘李四’: ‘123456’}

9.定义一个静态的方法

首先定义类,然后定义静态方法:静态方法中没有self

class object_utils:
    # 创建静态方法
    def isNull(o=None):
        print("调用静态方法!")
        return o == None

调用静态方法

if __name__ == "__main__":
    print(object_utils.isNull(None))

结果:

调用静态方法!
True

10.总结

1.定义函数的时候需要使用def声明这个是一个函数

2.创建函数的时候可以指定参数的默认值,在调用的时候就不需要传递参数

3.创建私有变量和私有方法时需要使用__开头,创建受保护的方法和变量的时候需要使用_开头

4.通过在方法上添加@property可以将一个方法的调用方式变为变量的调用方式

5.定义可变参数集合使用*变量名,定义可变字典使用**变量

以上纯属个人见解,如有问题请联系本人!

发布了215 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45492007/article/details/102998023
今日推荐