Tag 3 ---- anonyme Funktionen, rekursive Funktionen, Klassen und Objekte

Inhaltsverzeichnis

1. Anonyme Funktion

1. Grundkenntnisse

2. Erkenntnis 

2. Rekursive Funktion

1. Grundkenntnisse

2. Rekursives Funktionstraining

Thema 1 [Stärkungstraining]

Fragenstamm

Es gibt folgenden Code:

Was ist der endgültige Ausgabewert dieses Codes?

Trainingsziel

Unterscheiden Sie zwischen globalen Variablen und lokalen Variablen

Trainingstipps

Was ist der Unterschied zwischen globalen Variablen und lokalen Variablen?

Referenzplan

Wenn Sie bei Variablen innerhalb einer Funktion eine Variable ohne globale Deklaration ändern, entspricht dies der Neudefinition einer lokalen Variablen mit demselben Namen wie die globale Variable

Thema 2 [Stärkungstraining]

Fragenstamm

Es gibt folgenden Code:

Jetzt möchte ich die Abnum-Funktion aufrufen, befürchte aber, dass die Position des Parameters beim Aufruf falsch ist. Wie kann ich diese Situation vermeiden? Schreiben Sie einen Code zur Demonstration

Trainingsziel

Verwendung von Schlüsselwortargumenten

Trainingstipps

Die vorhandenen Funktionen und formalen Parameter wurden in der Frage angegeben, aber wie können wir sicherstellen, dass die tatsächlichen Parameter eins zu eins ohne Fehler übergeben werden können?

Referenzplan

Verwenden Sie eindeutig Schlüsselwortparameter, um die Parameterposition anzugeben

Schritte

Geben Sie beim Aufruf der Funktion direkt den Wert des Parameters an

Referenzantwort

Thema 3 [Stärkungstraining]

Fragenstamm

Wenn Sie beim Ausfüllen persönlicher Daten „weiblich“ auswählen, ist das Geschlecht weiblich. Wenn Sie kein Geschlecht auswählen, ist es standardmäßig „männlich“. Wie kann diese Funktion also mit Funktionen realisiert werden?

Die Anforderungen lauten wie folgt: Definieren Sie ein Funktionsgeschlecht und setzen Sie das „ausgewählte Geschlecht auf *“ in der Funktion, damit es aufgerufen und erfolgreich ausgeführt werden kann.

Trainingsziel

Üben Sie die Verwendung von Standardparametern. Tatsächlich werden Standardparameter auch sehr häufig verwendet

Trainingstipps

Wie deklariert man beim Definieren einer Funktion, dass der formale Parameter der Standardparameter ist?

Welche Bedeutung haben die Standardparameter?

Referenzplan

Deklarieren Sie Standardparameter direkt beim Deklarieren der Funktion.

Der Standardparameter bedeutet, dass, wenn kein Parameter übergeben wird, dieser gemäß dem Standardwert verwendet wird und das Programm keinen Fehler meldet.

Schritte

Referenzantwort

Thema 4 [Stärkungstraining]

Fragenstamm

Es ist erforderlich, einen Code zu implementieren:

Deklarieren Sie eine Funktionsnummer. Wenn die Funktion aufgerufen wird, kann die Funktion ausgeführt werden, unabhängig davon, wie viele Nicht-Schlüsselwortparameter eingegeben werden, und jeder Parameter wird auf dem Bildschirm innerhalb der Funktion ausgegeben.

Trainingsziel

Verwendung von Tupeltypparametern variabler Länge

Durchquerung von Tupeln

Trainingstipps

Was bewirkt der Parameter für unbestimmte Länge?

Referenzplan

Wenn die Anzahl der Parameter unsicher ist, verwenden Sie Parameter variabler Länge als formale Parameter, und es können mehrere akzeptable Parameter akzeptiert werden.

Schritte

Definieren Sie eine Funktionsnummer, der formale Parameter ist *args, und führen Sie dann eine Tupel-Traversal-Ausgabe innerhalb der Funktion durch

Referenzantwort

Thema 5 [Umfassende Schulung]

Fragenstamm

Dies ist ein Wörterbuch wie unten gezeigt: {"name": "Computer", "Preis": 7000}

Bitte definieren Sie eine solche Funktionsnummer, übergeben Sie die Schlüssel-Wert-Paare im obigen Wörterbuch an die Funktionsnummer, erfordern Sie für den Empfang Parameter variabler Länge und geben Sie die Schlüssel-Wert-Paare in der Funktionsausgabe aus

Das Ausgabeformat ist:

Trainingsziel

Die Verwendung eines Wörterbuchtyps mit Parametern variabler Länge zum Durchlaufen des Wörterbuchs

Trainingstipps

Was ist das Schlüsselwort des Parameters variabler Länge des Wörterbuchtyps?

Wie übergebe ich Parameter beim Aufruf einer Funktion?

Wie vervollständigt man die Durchquerung und Ausgabe des Wörterbuchs?

Referenzplan

1. Es gibt kein festes Schlüsselwort für Parameterschlüsselwörter variabler Länge, aber **kwargs werden im Allgemeinen häufiger verwendet

2. Übergeben Sie Schlüsselwortparameter

​ 3. Sie können die Schlüssel, Werte und Schlüssel-Wert-Paare des Wörterbuchs durchlaufen

Schritte

Parameterschlüsselwörter variabler Länge haben keine festen Schlüsselwörter, verwenden jedoch im Allgemeinen mehr **kwargs

Auswahl mit dict.items() durchlaufen

Übergeben Sie beim Aufruf Schlüsselwortparameter und nur Schlüssel-Wert-Paare

Referenzantwort

Thema 6 [Umfassende Schulung]

Fragenstamm

Für eine Funktion num, wenn man nun(1,2,a=3,b=4) und num(3,4,5,6,a=1) und num(a=1,b=2) aufruft Beide können läuft normal und kann Tupel und Wörterbuchtypen durchlaufen und ausgeben sowie Wörterbuch-Schlüssel-Wert-Paare (in der Form: Schlüssel: a, Wert: 1) für Wörterbuchtypen ausgeben.

Bitte schreiben Sie diese Funktion und schließen Sie den Aufruf ab.

Trainingsziel

Gemischte Verwendung von Parametern mit variabler Länge vom Tupeltyp und Parametern mit variabler Länge vom Wörterbuchtyp

Trainingstipps

Wie sollte die Reihenfolge aufgegeben werden, wenn zwei Parameter variabler Länge vorhanden sind, Tupel und Wörterbuch? Wie übergebe ich Parameter? Gibt es eine Reihenfolge in der Parameterreihenfolge?

Referenzplan

Sie können die beiden formalen Parameter args und *kwargs verwenden

Definieren Sie eine Funktionsnummer, setzen Sie beim Aufruf die Schlüsselwortparameter am Ende und andere Parameter vor die Funktion

Schritte

Bei der Definition der Funktionsnummer sollte die Parameterreihenfolge *args, **kwargs sein

Sie können den Durchlaufvorgang separat innerhalb der Funktion ausführen

Referenzantwort

3. Klassen und Objekte

1. Grundkenntnisse

2. Klassenergänzung und Erwerb von Objekteigenschaften

3. Magische Methode


1. Anonyme Funktion

1. Grundkenntnisse

Lambda-Parameter1, Parameter2, ...: Ausdruck

Kann while nicht verwendet werden, wenn

kein Parameter, kein Rückgabewert
Lambda: Funktionscode

Rückgabewert ohne Parameter
Lambda :1.txt+2

Mit Parametern, aber ohne Rückgabewert
Lambda a,b.txt: Funktionscode

haben Parameter und Rückgabewert
Lambda a,b.txt,c:a+b.txt

2. Erkenntnis 

# 1.txt. 无参无返回值
def func1():
    print('hello')


(lambda: print('hello lambda'))()
func1()
f1 = lambda: print('hello lambda')
f1()


# 2. 无参有返回值
def func2():
    return 1 + 2


f2 = lambda: 1 + 2
print(f2())


# 3. 有参无返回值
def func3(name):
    print(name)


f3 = lambda name: print(name)
f3('hwllo')


# 4. 有参有返回值
def func4(*args):
    return args


f4 = lambda *args: args
print(f4(1, 2, 3, 4, 5))

# 匿名函数作为参数使用

# 四则运算
def my_cala(a,b,func):
    print('其他函数代码')
    num=func(a,b)
    print(num)


my_cala(10,20,lambda a,b:a+b)
my_cala(10,20,lambda a,b:a-b)
my_cala(10,20,lambda a,b:a*b)
my_cala(10,20,lambda a,b:a/b)

2. Rekursive Funktion

1. Grundkenntnisse

# 递归函数条件:函数自己嵌套调用本身,有一个终止条件


# A比B大2岁,B比C大2岁,.....,F年龄为18岁,求A年龄
def get_age(num):
    # 求第num个人的年龄=num-1个人的年龄+2
    if num==1:
        return 18
    age=get_age(num-1)+2
    return age

# 求阶乘
def jiecheng(num):
    if num==1:
        return 1
    result=jiecheng(num-1)*num
    return result

2. Rekursives Funktionstraining

Thema 1 [Stärkungstraining]

Fragenstamm

Es gibt folgenden Code:

num = 10
def anum():
    num = 20
    
print(num)

Was ist der endgültige Ausgabewert dieses Codes?

Trainingsziel

  1. Unterscheiden Sie zwischen globalen Variablen und lokalen Variablen

Trainingstipps

  1. Was ist der Unterschied zwischen globalen Variablen und lokalen Variablen?

Referenzplan

Wenn Sie bei Variablen innerhalb einer Funktion eine Variable ohne globale Deklaration ändern, entspricht dies der Neudefinition einer lokalen Variablen mit demselben Namen wie die globale Variable

Thema 2 [Stärkungstraining]

Fragenstamm

Es gibt folgenden Code:

def abnum(big, small, middle):
    .....#此处省略一千行代码

Jetzt möchte ich die Abnum-Funktion aufrufen, befürchte aber, dass die Position des Parameters beim Aufruf falsch ist. Wie kann ich diese Situation vermeiden? Schreiben Sie einen Code zur Demonstration

Trainingsziel

Verwendung von Schlüsselwortargumenten

Trainingstipps

  1. Die vorhandenen Funktionen und formalen Parameter wurden in der Frage angegeben, aber wie können wir sicherstellen, dass die tatsächlichen Parameter eins zu eins ohne Fehler übergeben werden können?

Referenzplan

  1. Verwenden Sie eindeutig Schlüsselwortparameter, um die Parameterposition anzugeben

Schritte

  1. Geben Sie beim Aufruf der Funktion direkt den Wert des Parameters an

Referenzantwort

abnum(big=5, small=1, middle=1)

Thema 3 [Stärkungstraining]

Fragenstamm

Wenn Sie beim Ausfüllen persönlicher Daten „weiblich“ auswählen, ist das Geschlecht weiblich. Wenn Sie kein Geschlecht auswählen, ist es standardmäßig „männlich“. Wie kann diese Funktion also mit Funktionen realisiert werden?

Die Anforderungen lauten wie folgt: Definieren Sie ein Funktionsgeschlecht und setzen Sie das „ausgewählte Geschlecht auf *“ in der Funktion, damit es aufgerufen und erfolgreich ausgeführt werden kann.

Trainingsziel

  1. Üben Sie die Verwendung von Standardparametern. Tatsächlich werden Standardparameter auch sehr häufig verwendet

Trainingstipps

  1. Wie deklariert man beim Definieren einer Funktion, dass der formale Parameter der Standardparameter ist?

  2. Welche Bedeutung haben die Standardparameter?

Referenzplan

  1. Deklarieren Sie Standardparameter direkt beim Deklarieren der Funktion.

  2. Der Standardparameter bedeutet, dass, wenn kein Parameter übergeben wird, dieser gemäß dem Standardwert verwendet wird und das Programm keinen Fehler meldet.

Schritte

Referenzantwort

def gender(g="男"):
	print("您的性别是:"+g)
gender()
# 经过上述例子以及代码,是不是说明我们的缺省参数是可以缺少可以省去的?

Thema 4 [Stärkungstraining]

Fragenstamm

Es ist erforderlich, einen Code zu implementieren:

Deklarieren Sie eine Funktionsnummer. Wenn die Funktion aufgerufen wird, kann die Funktion ausgeführt werden, unabhängig davon, wie viele Nicht-Schlüsselwortparameter eingegeben werden, und jeder Parameter wird auf dem Bildschirm innerhalb der Funktion ausgegeben.

Trainingsziel

  1. Verwendung von Tupeltypparametern variabler Länge

  2. Durchquerung von Tupeln

Trainingstipps

  1. Was bewirkt der Parameter für unbestimmte Länge?

Referenzplan

  1. Wenn die Anzahl der Parameter unsicher ist, verwenden Sie Parameter variabler Länge als formale Parameter, und es können mehrere akzeptable Parameter akzeptiert werden.

Schritte

  1. Definieren Sie eine Funktionsnummer, der formale Parameter ist *args, und führen Sie dann eine Tupel-Traversal-Ausgabe innerhalb der Funktion durch

Referenzantwort

def num(*args):
    for i in args:
        print(i)

Thema 5 [Umfassende Schulung]

Fragenstamm

Dies ist ein Wörterbuch wie unten gezeigt: {"name": "Computer", "Preis": 7000}

Bitte definieren Sie eine solche Funktionsnummer, übergeben Sie die Schlüssel-Wert-Paare im obigen Wörterbuch an die Funktionsnummer, erfordern Sie für den Empfang Parameter variabler Länge und geben Sie die Schlüssel-Wert-Paare in der Funktionsausgabe aus

Das Ausgabeformat ist:

key: name value: 电脑
key: price value: 700

Trainingsziel

Die Verwendung eines Wörterbuchtyps mit Parametern variabler Länge zum Durchlaufen des Wörterbuchs

Trainingstipps

  1. Was ist das Schlüsselwort des Parameters variabler Länge des Wörterbuchtyps?

  2. Wie übergebe ich Parameter beim Aufruf einer Funktion?

  3. Wie vervollständigt man die Durchquerung und Ausgabe des Wörterbuchs?

Referenzplan

1. Es gibt kein festes Schlüsselwort für Parameterschlüsselwörter variabler Länge, aber **kwargs werden im Allgemeinen häufiger verwendet

2. Übergeben Sie Schlüsselwortparameter

​ 3. Sie können die Schlüssel, Werte und Schlüssel-Wert-Paare des Wörterbuchs durchlaufen

Schritte

  1. Parameterschlüsselwörter variabler Länge haben keine festen Schlüsselwörter, verwenden jedoch im Allgemeinen mehr **kwargs

  2. Auswahl mit dict.items() durchlaufen

  3. Übergeben Sie beim Aufruf Schlüsselwortparameter und nur Schlüssel-Wert-Paare

Referenzantwort

def num(**kwargs):
    for key,value in kwargs.items():
        print("key:",key,"value:",value)
num(name="电脑", price=700)

Thema 6 [Umfassende Schulung]

Fragenstamm

Für eine Funktion num, wenn man nun(1,2,a=3,b=4) und num(3,4,5,6,a=1) und num(a=1,b=2) aufruft Beide können läuft normal und kann Tupel und Wörterbuchtypen durchlaufen und ausgeben sowie Wörterbuch-Schlüssel-Wert-Paare (in der Form: Schlüssel: a, Wert: 1) für Wörterbuchtypen ausgeben.

Bitte schreiben Sie diese Funktion und schließen Sie den Aufruf ab.

Trainingsziel

Gemischte Verwendung von Parametern mit variabler Länge vom Tupeltyp und Parametern mit variabler Länge vom Wörterbuchtyp

Trainingstipps

  1. Wie sollte die Reihenfolge aufgegeben werden, wenn zwei Parameter variabler Länge vorhanden sind, Tupel und Wörterbuch? Wie übergebe ich Parameter? Gibt es eine Reihenfolge in der Parameterreihenfolge?

Referenzplan

  1. Sie können die beiden formalen Parameter args und *kwargs verwenden

  2. Definieren Sie eine Funktionsnummer, setzen Sie beim Aufruf die Schlüsselwortparameter am Ende und andere Parameter vor die Funktion

Schritte

  1. Bei der Definition der Funktionsnummer sollte die Parameterreihenfolge *args, **kwargs sein

  2. Sie können den Durchlaufvorgang separat innerhalb der Funktion ausführen

Referenzantwort

def num(*args, **kwargs):
    for i in args:
        print(i)
    for key,value in kwargs.items():
        print("key:",key,"value:",value)
num(1,2,3,a=1, b=2)
# num(a=1.txt, b.txt=2)  此种情况也可

3. Klassen und Objekte

1. Grundkenntnisse

Programmierdenken: Behandeln Sie das gleiche Problem und lösen Sie das Problem
    Prozessorientiert: Funktionen
    Objektorientierung: Kapselung, Vererbung, Polymorphismus
Objektorientierte:
    Bei der Implementierung der IGE-Funktion kommt es nicht auf den Prozess und die Schritte an, sondern darauf, wer es für mich erledigt
Klasse: Bezieht sich allgemein auf mehrere. vom Objekt abstrahiert
    Modell
    Attribut, Verhalten
    Klasse
Objekt: Spezifisch, sich auf eines beziehend. konkrete Existenz
     Schimmel
     erstellt von der Klasse

Die Zusammensetzung der Klasse: Klassenname
        Klassenattribute: Attribute, Variablen
        Klassenmethoden: Verhalten, Funktionen
Klassenabstraktion: Methode zur Substantivextraktion. Was Sie sehen, ist das, was Sie erhalten
Klassendefinition:
Objekt: Die Basisklasse aller Klassen, die ursprünglichste Klasse
 Klasse Klassenname (Objekt): Big-Bump-Namenskonvention
    der Code
Klasse Hund(Objekt):
Klasse Dog():
Klasse Hund:

Klassen im neuen Stil: Objekte direkt oder indirekt erben und Objekte standardmäßig in Python3 erben. Bei allen handelt es sich um Klassen im neuen Stil
Klasse und Klasse direkt zwei Leerzeilen
Eine in einer Klasse definierte Funktion wird als Methode bezeichnet
Objekt erstellen: Variable = Klassenname()
Aufrufmethode: Objekt. Methodenname ()

2. Klassenergänzung und Erwerb von Objekteigenschaften

类外部添加和获取对象属性
class Dog:
    def play(self):
        print('小狗快乐拆家中...')
    pass

# 创建对象: 变量=类名()
dog=Dog()
# 调用方法:对象.方法名()
dog.play()
# 对象添加属性 对象.属性名=属性值
dog.name='大黄'
dog.age=2
# 获取属性值 对象.属性名
print(dog.name)
# 修改属性值 与增添一样,存在就修改,不存在就添加
dog.age=4
'''

'''
类内部使用self获取属性值
self 代表对象  形参的名字 通过对象调用方法时,不需手动传递实参
class Dog:
    def play(self):
        print(f'小狗{self.name}快乐拆家中...')
    pass

dog=Dog()
dog.name='大黄'
dog.age=2
dog.play()
'''

3. Magische Methode

魔法方法:两个下划线开头,两个下划线结尾,满足某种特定情况下会自动调用

__init__()的使用
调用时机:创建对象后立即调用
作用:给对象添加属性
传递init里的形参:类名(实参)
class Dog:
    def __init__(self,name,age):
        # 对象.属性名=对象.属性值
        self.name=name
        self.age=age
    def play(self):
        print(f'小狗{self.name}快乐拆家中...')
    pass

# 创建对象 类目(实参值)
dog=Dog('大黄',3)
print(dog.name)
print(dog.age)

__str__()的使用
调用时机:print(对象)自动调用,结果为次方法返回值
        str(对象)将自定义对象转换为字符串时,自动调用此方法
方法必须返回一个字符串,只有一个self参数
没有定义时,使用print()、str()默认输出对象的引用地址
class Dog:
    def __init__(self,name,age):
        # 对象.属性名=对象.属性值
        self.name=name
        self.age=age
    def __str__(self):
        # 返回一个字符串
        return f'小狗的名字为{self.name},小狗的年龄为{self.age}'
    def play(self):
        print(f'小狗{self.name}快乐拆家中...')
    pass

# 创建对象 类目(实参值)
dog=Dog('大黄',2)
print(dog)
str_dog=str(dog)
print(str_dog)

__del__()的使用  析构函数
调用时机:对象在内存中被销毁或删除的时候(引用计数为0)
        程序代码运行结束,在程序运行过程中,创建的所有对象、变量被销毁
        使用__del__变量,将对象的引用计数变为0
引用计数:python内存管理的一种机制,指一块内存,有多少变量在引用
    当一个变量引用一块内存,引用计数+1
    当删除一个变量,引用计数-1
    当内存的引用计数为0,内存被删除,内存中的数据被销毁

__repr__()的使用  与__str__()类似,必须返回一个字符串

Guess you like

Origin blog.csdn.net/m0_46493223/article/details/126090800