Python编程基础[函数和面向对象](三)

Python 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

函数的结构
def 函数名 (参数1,参数2):
函数体
return是返回值
参数:可选 return:可选,默认为none
函数:用def语句
1:依次是函数名、括号、括号中的参数和冒号;
2:然后在缩进块中编写函数体
3:函数的返回值用return语句返回,一旦执行到return时,函数就执行完毕
函数调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
def print_def(str):
print(str)

print_def("行云流水")

return 语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

def sum(a,b):
he=a+b
return he

print(sum(10,25))

变量作用域

一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:

全局变量    局部变量


全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

total = 0;  # 这是一个全局变量
def sum(arg1, arg2):
total = arg1 + arg2; # total在这里是局部变量.
print("函数内是局部变量 : ", total)
return total;

sum(10, 20)
print(
"函数外是全局变量 : ", total)

Python 面向对象

背景:为什么要学类
1.当我们写了很多用例,我们需要组织用例以及测试执行获取测试报告,需要用到标准库unittest(其实就是一个库里面的类);
2.自动化常用的 driver.find_elements_by_xpath(''),其实也是去调用selenium里面一个类的方法

面象对象俩个重要的概念:类(class)和实例(instance)
类是抽象的:用来描述具有相同属性和相同方法的对象的集合;
比如说人类;student类;员工类:
相同的属性:比如都有眼睛,鼻子。
相同的方法(功能):吃饭睡觉,说话
实例:是根据类创建出来的具体的对象;
比如某一个人小明,某一个学生,高三班的张三;
每个对象有相同的属性和方法,但是属性的值都不一样。
实例化:创建一个类的实例,类的具体的对象;

创建类

使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:

class ClassName:
   '类的帮助信息'   #类文档字符串
   class_suite  #类体由类成员,方法,数据属性组成。
例子
class Employee:
'所有员工的基类'
empCount = 0

def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1

def displayCount(self):
print("Total Employee %d" % Employee.empCount)

def displayEmployee(self):
print("Name : ", self.name, ", Salary: ", self.salary)
empCount 变量:是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。
第一种方法__init__()方法:是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
self代表的是类的实例,代表当前对象的地址,而self._XXXXX则指向类。

创建实例对象

Python 中类的实例化类似函数调用方式。

可以使用点号 . 来访问对象的属性。

lisi=Employee("李四","软件测试工程师")
lisi.displayEmployee()
print(Employee.empCount)

类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。

通过继承创建的新类称为子类派生类,被继承的类称为基类父类超类

继承语法

class 派生类名(基类名)
    ...

class Parent:  # 定义父类
parentAttr = 100

def __init__(self):
print("调用父类构造函数")

def parentMethod(self):
print('调用父类方法')

def setAttr(self, attr):
Parent.parentAttr = attr

def getAttr(self):
print("父类属性 :", Parent.parentAttr)


class Child(Parent): # 定义子类
def __init__(self):
print("调用子类构造方法")

def childMethod(self):
print('调用子类方法')

c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值

方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:

class Parent:  # 定义父类
def myMethod(self):
print( '我是父类方法')


class Child(Parent): # 定义子类
def myMethod(self):
print("我把父类方法重写了")


c = Child() # 子类实例
c.myMethod() # 子类调用重写方法

原文地址:https://www.cnblogs.com/cyq0528/p/9856732.html