Python 基础语法(二)

1. 函数基础

函数就是为了实现某一功能的代码段,只要写好以后,就可以重复利用。我们先来看 下面一个简单的例子:

1 def my_func(message):
2 print('Got a message: {}'.format(message))
3
4 # 调用函数 my_func()
5 my_func('Hello World')
6 # 输出
7 Got a message: Hello World

Python是一种功能强大的编程语言,支持函数的定义和使用。函数是一段可重用的代码块,用于执行特定的任务。在Python中,函数定义使用关键字"def",其基本语法如下:

def 函数名(参数列表):
    函数体
    return 返回值

其中:

  • 函数名是函数的标识符,用于调用函数执行相应的任务。
  • 参数列表是可选的,用于传递数据给函数。多个参数之间使用逗号分隔。
  • 函数体是一组代码块,用于实现函数的具体功能。
  • return语句可选,用于指定函数的返回值。

以下是一个简单的示例,展示了一个接受两个参数并返回它们之和的函数:

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

要调用函数并使用其返回值,可以按以下方式进行:

result = add_numbers(5, 3)
print(result)  # 输出:8

这将输出函数返回的值。

除了基本的函数定义和调用外,Python还支持以下特性和用法:

  1. 默认参数:可以为函数的参数提供默认值,当调用函数时如果没有传递对应参数,则使用默认值。
  2. 可变参数:允许函数接受不定数量的参数,可以是位置参数或关键字参数。
  3. 匿名函数(Lambda函数):一种简单的函数形式,可以在不定义函数名称的情况下创建函数。
  4. 递归函数:函数可以调用自身,用于解决需要重复执行相似任务的问题。
  5. 函数作为参数和返回值:函数可以作为其他函数的参数传递,也可以作为函数的返回值返回。

2. 闭包

在Python中,闭包(Closure)是指在一个函数内部定义的函数,并且该内部函数可以访问其外部函数的变量,即使外部函数已经执行结束。闭包可以捕获并保存外部函数的状态,使得函数可以记住并访问其创建时的上下文环境。

闭包的主要特点是内部函数可以访问外部函数的变量,并且这些变量可以保持在内存中,即使外部函数已经执行完毕。这样,当内部函数被调用时,它仍然可以使用外部函数的变量值。

下面是一个示例,展示了一个返回闭包的函数:

def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

closure = outer_function(10)
result = closure(5)
print(result)  # 输出:15

在上述示例中,outer_function 是外部函数,它接受一个参数 x。内部函数 inner_function 定义在 outer_function 内部,并且使用了 x 这个外部函数的变量。outer_function 返回了 inner_function,形成了一个闭包。

当调用 outer_function(10) 后,返回的闭包 closure 捕获了 x 的值为 10。然后,当调用 closure(5) 时,闭包使用了外部函数的变量 x,并将其与传入的参数 y 相加,得到结果 15。

闭包在许多情况下非常有用,例如在函数式编程中,可以使用闭包创建函数工厂,动态生成函数。闭包还可以用于保持私有状态,实现信息隐藏等。

3.匿名函数基础

什么是匿名函数呢?以下是匿名函数的格式:
lambda argument1, argument2,... argumentN : expression

我们可以看到,匿名函数的关键字是 lambda,之后是一系列的参数,然后用冒号隔开,最后 则是由这些参数组成的表达式。

我们可以看到,匿名函数的关键字是 lambda,之后是一系列的参数,然后用冒号隔开,最后 则是由这些参数组成的表达式。我们通过几个例子看一下它的用法:

 square = lambda x: x**2 
 square(3)
 9

这里的匿名函数只输入一个参数 x,输出则是输入 x 的平方。因此当输入是 3 时,输出便是 9。

理论上来说,Python 中有匿名函数的地方,都可以被替换成等价的其他表达形式。一个 Python 程序是可以不用任何匿名函数的。不过,在一些情况下,使用匿名函数 lambda,可 以帮助我们大大简化代码的复杂度,提高代码的可读性。

4.面向对象

在Python中,类(Class)是一种面向对象编程的重要概念,用于创建对象的蓝图。类定义了对象的属性(变量)和方法(函数),它们描述了对象的特征和行为。

类的基本语法如下:

class 类名:
    属性定义
    
    def 方法名(self, 参数列表):
        方法体

其中:

  • 类名是用于标识类的名称,通常采用驼峰命名法(每个单词的首字母大写)。
  • 属性定义是类的数据成员,用于存储对象的状态信息。属性可以在类的任何方法中使用,也可以在类外部通过对象进行访问。
  • 方法是类中定义的函数,用于实现类的行为。方法的第一个参数必须是self,它指向调用该方法的对象实例。

以下是一个简单的示例,展示了一个包含属性和方法的类的定义和使用:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def say_hello(self):
        print("Hello, my name is", self.name, "and I am", self.age, "years old.")

# 创建对象实例
person = Person("Alice", 25)

# 访问对象的属性
print(person.name)  # 输出:Alice
print(person.age)  # 输出:25

# 调用对象的方法
person.say_hello()  # 输出:Hello, my name is Alice and I am 25 years old.

在上述示例中,Person 是一个类,它具有nameage两个属性,以及一个say_hello方法。通过__init__方法(构造函数),我们在创建对象实例时初始化了属性的值。然后,我们可以通过对象实例访问属性的值,并调用对象的方法。

类的概念使得我们可以创建多个具有相似特征和行为的对象,并可以通过类来封装数据和行为,实现代码的重用性和模块化。通过继承和多态等特性,还可以构建更加复杂的类体系和对象关系。

5.类的继承

在Python中,类的继承是一种重要的面向对象编程概念,允许一个类(子类)从另一个类(父类或基类)继承属性和方法。继承使得子类可以重用父类的代码,并且可以在其基础上添加新的属性和方法,或者修改继承的属性和方法的行为。

要定义一个继承关系,可以在子类的类定义中指定父类。子类可以继承一个或多个父类,并且可以通过调用父类的方法来使用父类的行为。继承的语法如下:

class 子类名(父类名):
    属性定义
    
    def 方法名(self, 参数列表):
        方法体

以下是一个简单的示例,展示了一个继承关系的类定义和使用:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def sound(self):
        print("Animal makes a sound.")

class Dog(Animal):
    def sound(self):
        print("Dog barks.")

# 创建对象实例
animal = Animal("Animal")
dog = Dog("Tommy")

# 调用父类的方法
animal.sound()  # 输出:Animal makes a sound.

# 调用子类的方法
dog.sound()  # 输出:Dog barks.

在上述示例中,Animal 是父类,Dog 是子类。Dog 类继承了 Animal 类,因此它可以使用 Animal 类的属性和方法。子类 Dog 还可以重写继承的方法,如 sound 方法,在子类中实现特定的行为。

在创建对象实例时,可以使用父类或子类的构造函数。父类的构造函数可以通过子类的构造函数进行调用,以初始化继承的属性。

继承的概念使得代码的组织和复用更加灵活和方便。通过继承,可以构建类的层次结构,实现更高层次的抽象和扩展性。此外,还可以使用多重继承来从多个父类中继承属性和方法。

你可能感兴趣的:(人生苦短来玩Python,python,开发语言,数学建模)