Python 学习(3):基础知识点

本文详细介绍了Python中的函数和类的使用方法,包括定义、参数传递、类的继承及多态等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录Python中关于函数和类的知识点。


函数

和每一种编程语言一样,Python也有函数。

定义

def my_abs(x):
    if x>= 0:
        return x
    else:
        return -x

参数

个人感觉Python 在处理函数参数的时候比较灵活和方便,主要有一下几种参数类型。

位置参数

def power (x,n):
    s = 1
    while n > 0:
        n = n-1
        s = s * x
    return s

默认参数

def power (x,n=2):
    s = 1
    while n > 0:
        n = n-1
        s = s * x
    return s

可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

def calc (numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum

调用的时候需要传入一个list。长度不限

calc([1, 2, 3])
calc([1, 2, 3, 4, 5, 6, 7])

为了简化调用的步骤,可以在传入参数前面加一个*。这样就可以直接传入可变的参数了。

def calc (*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum

调用

calc(1, 2, 3)
calc(1, 2, 3, 4, 5, 6, 7)

关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name,age,**kw):
    print('name:',name,'age:',age,'other:',kw)

调用

person('Bob','23')
person('Bob','23',city='shanghai',job='student')

结果

name: Bob age: 23 other: {}
name: Bob age: 23 other: {'city': 'shanghai', 'job': 'student'}

同事传入参数也支持一个dict

arg = {'city': 'shanghai', 'job': 'student'}
person('Bob','23',**arg)

命名关键字参数

对传入的参数有限制,可以使用命名关键字参数

def person(name,age,*,city,job):
    pass

为了与位置参数相区分,在中间加入*,后面的参数是命名关键字参数

调用

person(name,age,city='shanghai',job='student')

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*

def person(name,age,*args,city,job):
    pass

另外命名关键字传入不许传入参数,不存在默认参数。

模块化

将功能函数和主程序代码分离,可以使用模块来打包函数(Java中用包来管理)。

导入整个包

import module_name

导入一个包中的某个函数

from module_name import function_name1,function_name2

给导入的函数起别名

如果导入的函数和当前文件中的函数名产生了冲突,可以给函数起一个别名

from module_name import function_name as f

利用as关键字。同样这样的起名方式适用于模块。

import module_name as m

类和对象

python 是一门面向对象的语言,同样包含类和对象的概念

定义类 创建对象

class Student(object):   # 定义类
    pass

bob = Student()   # 创建对象

初始化参数

class Student(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def my_print(self):
        print('name:',self.name,'age:',self.age)

更改访问权限

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线,在Python中,实例的变量名如果以开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。

class Student(object):
    def __init__(self,name,age):
        self.__name = name
        self.__age = age

    def my_print(self):
        print('name:',self.name,'age:',self.age)

当我需要成员的私有属性时,只能通过类定义的get(),set()方法类获取与修改。不能直接通过对象.属性访问

继承

继承特性是一个面向对象必不可少的。python的实现方式如下

class FatherClass(object):
    pass

class SonClass(FatherClass):
    pass

之前可以看到self关键字可以便是当前对象本身,如果需要调用父类的方法可以使用super关键字。

class FatherClass(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age

class SonClass(FatherClass):
    def __init__(self,name,age):
        super().__init__(name,age)

多态

有了类之间的继承关系。必定会引入多态的概念,python中的多态概念和其他的面向对象的语言类似,这里不做过多赘述。值得注意的是。python 是一门动态语言。例如一个传入参数为A类的函数,按照一般静态语言(Java)来说。需要传入一个A类或者A的子类。但是在Python总,只要传入的类包含相应的属性或者方法即可。无需与定义的传入参数的那个类一定有继承关系。

类的导入

从模块中导入类的方法和导入函数方法类似,不做赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值