Inhaltsverzeichnis
2. Rekursives Funktionstraining
Was ist der endgültige Ausgabewert dieses Codes?
Unterscheiden Sie zwischen globalen Variablen und lokalen Variablen
Was ist der Unterschied zwischen globalen Variablen und lokalen Variablen?
Verwendung von Schlüsselwortargumenten
Verwenden Sie eindeutig Schlüsselwortparameter, um die Parameterposition anzugeben
Geben Sie beim Aufruf der Funktion direkt den Wert des Parameters an
Welche Bedeutung haben die Standardparameter?
Deklarieren Sie Standardparameter direkt beim Deklarieren der Funktion.
Es ist erforderlich, einen Code zu implementieren:
Verwendung von Tupeltypparametern variabler Länge
Was bewirkt der Parameter für unbestimmte Länge?
Dies ist ein Wörterbuch wie unten gezeigt: {"name": "Computer", "Preis": 7000}
Die Verwendung eines Wörterbuchtyps mit Parametern variabler Länge zum Durchlaufen des Wörterbuchs
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?
2. Übergeben Sie Schlüsselwortparameter
3. Sie können die Schlüssel, Werte und Schlüssel-Wert-Paare des Wörterbuchs durchlaufen
Auswahl mit dict.items() durchlaufen
Übergeben Sie beim Aufruf Schlüsselwortparameter und nur Schlüssel-Wert-Paare
Bitte schreiben Sie diese Funktion und schließen Sie den Aufruf ab.
Sie können die beiden formalen Parameter args und *kwargs verwenden
Bei der Definition der Funktionsnummer sollte die Parameterreihenfolge *args, **kwargs sein
Sie können den Durchlaufvorgang separat innerhalb der Funktion ausführen
2. Klassenergänzung und Erwerb von Objekteigenschaften
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
-
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:
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
-
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
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
-
Ü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
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
-
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
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
-
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
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
-
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
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__()类似,必须返回一个字符串