python基础-函数与对象简介

一. 函数

1.1 函数定义

python的函数是以 def 开头。在PHP及JS中函数都是使用 function 关键字来声明一个函数,这一点与大多数编程语言不同,大家需要注意一下。再次声明一下,python中的代码块都是通过 : + 换行 + 4个空格 来区分代码边界的。具体格式如下:

def a():  
    print('具体的函数代码块')

在python中函数的参数定义基本和其他语言一致。但是,我们在调用函数进行传参时,既可以通过顺序进行传参,也可以通过指定关键字的形式传参。具体表现如下:

def div_data(a,b):  
    return a/b  
# 按顺序传值  
s = div_data(4,2)  
print(s) # 打印结果:2  
  
# 指定参数传值,即使顺序不一样也不影响传值  
s = div_data(b=4,a=2)  
print(s) # 打印结果:0.5

1.2 变量的作用域

函数中的变量属于局部变量,函数外的为全局变量。局部变量即使和全局变量名称一样,也不会影响全局变量。例如下方案例:

a = 1  
  
def sum1(x,y):  
    a = 3  
    return x+y  
  
print(sum1(4,12)) # 打印结果:16  
  
print(a) #打印结果:1

从上面的案例可以看出,虽然我们在函数 sum1 中已经修改了变量 a 的值,但是最后打印的结果依然是 1 。这是因为函数内的变量属于局部变量,哪怕是和全局变量同名,他也是局部变量。这一点和很多编程语言不太相同,大家需要特别注意一下

如果大家想知道函数内的变量和全局变量是不是同一个,可以使用 id() 函数查询变量的内存地址

二. 对象

2.1 类的定义及实例化

类的定义比较简单,通过 class 这个关键字定义类,并且以 (): 结尾。

有点我们需要特别注意,在python的类中申明一个对象方法时,这个方法的第一个参数必须是 当前类的对象 ,一般都是用 self 表示。当然我们也可以改成 this ,不过python的编程习惯中都是用 self 。此外,在方法中调用属性是通过 self 关键字。具体格式如下:

class Student():  
    # 构造方法  
    def __init__(self):  
        self.name = '学生类' #定义类的属性  
        self.age = 1 #定义类的属性  
      
    # 函数  
    def print_code(self,value):  
        print(value)  
      
    # 测试属性调用  
    def print_attr(self):  
        print('对象名称:'+self.name)  
        print('年龄'+str(self.age)) # 注意age为int类型,不能直接与字符串拼接

实例化一个类就和调用函数一样,这一点大家需要特别注意。在其他语言中都需要通过关键 new 加类名的方式来实例化, 但是python不需要。

# 例如实例化上面的学生类  
student = Student()

2.2 类属性及类方法

python中的类属性和方法类似与其他编程语言中的静态方法,但是他不是静态方法。虽然他不是静态方法,但是类方法和类属性的调用和其他编程语言中的静态方法很相似,都是通过 类 直接调用。此外,类方法的第一个参数必须存在,并且,第一个参数是当前类,python编程习惯使用 cls 来表示。具体方式如下:

class Student():  
    # 定义类属性  
    sum1 = 0  
      
    # 对象方法中测试静态属性调用  
    def print_attr(self):  
        self.__class__.sum1 = 3  
        # 或者是  
        Student.sum1 = 3  
  
    # 定义类方法  
    @classmethod  
    def class_func(cls):  
        cls.sum1 += 1  
        print(cls.sum1)  
        print('这是类方法')

@classmethod是一个装饰器,他代表了当前方法为类方法

在上述代码中,对象方法中调用类属性时,有两种方式。第一种是通过 __class__ 关键字调用,第二种是通过 当前 类 直接调用

类方法和类属性定义好之后,我们就可以通过类进行调用了,不过类方法和属性不仅可以通过类方法调用,还可以通过对象调用:

# 例如实例化上面的学生类  
st = Student()  
  
# 通过对象调用类方法  
st.class_func()  
  
# 使用类直接调用类方法  
Student.class_func()

2.3 静态方法的定义

静态方法的定义和类方法的定义有点相似,都是通过一个装饰器来定义。静态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值