Python语法问答4:函数+类和对象+模块导入

函数

函数的定义

del 函数名([参数]):

"""
函数
del 函数名([参数]):
    pass

函数如果不调用,无法获得结果
"""


def hello_world():
    print("hello world")
    pass


def hello_world_cnt(print_cnt):
    cnt = 0
    while cnt < print_cnt:
        print("hello world")
        cnt += 1
        pass


# hello_world()
# hello world

hello_world_cnt(3)
# hello world
# hello world
# hello world

形参与实参的定义与区别

形参:形式参数,写在函数后面的参数列表里的参数
实参:实际参数,实际调用函数时,传递的参数

函数的返回值是什么

默认返回None,可使用return自定义返回值

pass语句是什么

空语句,无实义

匿名函数的语法是什么

lambda 变量: 变量操作

"""
函数返回值
求两个数的和
"""


def add(a, b):
    """
    :param a: 被加数
    :param b: 加数
    :return: 和
    """
    return a + b


print(add(1, 2))
# 3

# 方式2
# 匿名函数
# add = lambda a, b: a + b
# print(add(2, 4))
# 6

函数参数传参方式有哪些

  1. 必需参数
  2. 关键字参数
  3. 默认参数
  • 只能指向不可变对象

可变参数的语法是什么

形参前面加一个*

"""
定义一个方法,传入两个参数,一个是多个货物的价格,一个是类型的折扣,返回货物总价格
"""


def sale_price(cut_off, *goods_prices):
    return sum(goods_prices) * cut_off


# print(sale_price(0.5, 1.0, 2.0, 3.0, 4.0))
# 5.0

prices = (1.0, 2.0, 3.0, 4.0)
# sale_price(0.5, prices)
# TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

print(sale_price(0.5, *prices))
# 5.0

可变参数以什么数据类型传参

可变参数

  1. *arg

数据以元组的形式传入

  1. **kwargs

数据以字典的形式传入

  1. 解包运算符*

列表/元组传入可变参数的语法是什么

使用解包运算符*

"""
打印学生信息
"""


def printInfo(**dic):
    print(f'姓名:{dic["name"]} 年龄:{dic["age"]} 性别:{dic["sex"]} 爱好:{dic["hobby"]}')


dic = {'name': 'Anna', 'age': 18, 'sex': '女', 'hobby': '阅读'}

# 解包
printInfo(**dic)
# 姓名:Anna 年龄:18 性别:女 爱好:阅读

存储函数多个返回值的方式有什么

  1. 单个变量存储返回值
  2. 以元组的形式存储返回值
"""
对x, y求和、减运算
"""


def add_and_sub(a, b):
    return a + b, a - b


# total, sub = add_and_sub(1, 2)
# print(total, sub)
# 3 -1

rst = add_and_sub(1, 2)
print(type(rst))
# 
print(rst)
# (3, -1)

函数返回多个值的数据类型是什么

以元组的形式返回多个值

变量作用域

  1. 局部变量,如函数内的变量,作用域在函数外无法使用
  2. 全局变量,可以在任何代码块里使用

局部变量和全局变量重名,单独对局部变量进行操作运算,不影响全局变量的值。可使用global名声局部变量,则会修改全局变量的值

"""
全局变量
局部变量
global关键字
"""

# num = 1
#
# def update_num():
#     num = 2
#     print(f'num = {num}')
#
# print(num)
# # 1
# update_num()
# # num = 2


num = 1


def update_num():
    global num
    num = 2
    print(f'num = {num}')


print(num)
# 1
update_num()
# num = 2
print(num)
# 2

设定可选参数的方式有哪些

  1. 参数设定为可变参数
  2. 参数可设有默认值

类和对象

面向对象的三大特征有什么

  1. 封装
  2. 继承
  3. 多态

什么是类

可以理解为模板
例如:动物–>猫科动物–>猫类–>中华田园猫

类的定义是什么

class 类名

对象方法的定义和函数的区别是什么

什么是对象

万物皆对象
一个具体的实例
例如:隔壁大爷家的橘猫

类和对象的关系是什么

类是抽象出来的模板,对象是具体的实例
例如:类是中华田园猫,对象是隔壁大爷家的橘猫

访问对象成员的语法是什么

使用.访问对象成员

对象的初始化方法__init__()什么时候被调用

当对象被创建的时候,就会调用对象的初始化方法
例如:cat = Cat()

对象的初始化方法__init__()的语法是什么

class Cat:
    def __init__(self):
        pass

__str__()是什么

使用print输出变量时的输出内容

class Cat:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return f'name:{self.name}'


cat = Cat('Tom')
print(cat)
# name:Tom

设定私有属性的语法是什么

属性名前加两个连续的下划线
写get方法访问私有属性

class Cat:
    def __init__(self, name, age):
        self.name = name
        self.__age = age

    def get_age(self):
        return self.__age

    def __str__(self):
        return f'name:{self.name}'


cat = Cat('Tom', 2)
print(cat.get_age())
# 2

什么是继承

一个模板类在原有属性的基础上,增加了一些新的属性
可以使用继承,以避免写重复代码

如何定义父类子类

class 类名1:
class 类名2(类名1):
则:类2继承于类1

子类如何复写父类方法

子类继承后,使用父类方法名,写新的代码

子类调用父类属性的语法是什么

使用super调用

类属性如何调用

类名或对象名使用.调用

类属性和对象属性的区别是什么

对象属性依赖于对象,类属性,可直接使用类名调用

模块导入

模块导入的方式是什么

使用import导入模块
通过判断__name__来控制输出

"""
两个不同的文件,a,b
a文件使用b中的代码,使用模块导入
在a文件中添加:
    import b
    if __name__ == '__main__': xxx
    如果b文件有输出信息,可添加__name__ == '__main__'判断输出

"""
from sort import NewList

nums = NewList()
nums.append(4)
nums.append(9)
nums.append(2)
nums.append(7)
# nums.sort()
# print(nums)
# [2, 4, 7, 9]
nums.sort(reverse=True)
print(nums)
# [9, 7, 4, 2]

你可能感兴趣的:(Python,python,开发语言,学习,笔记)