一入python深似海,从此妹纸是路人

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一入python深似海,从此妹纸是路人相关的知识,希望对你有一定的参考价值。

一、递归

如果一个函数在内部不调用其它函数,而是自己,这个函数就是递归函数;

优点:定义简单,逻辑清晰

特性:

1)必须有一个明确的结束条件;
2)超出一定调用次数,会导致栈溢出;

递推

回溯

1、累计求和

def funa(n):
sum1 = 0
for i in range(1, n + 1):
sum1 += i # sum1 = sum1 + i
print(sum1)
funa(3)
输出:6

一入python深似海,从此妹纸是路人(七)_类名

2、递归函数

lan_zi(第二天) = lan_zi(第一天) + dan(2)个
lan_zi(第三天) = lan_zi(第二天) + dan(3)个
funb(n) = funb(n-1) + n

一入python深似海,从此妹纸是路人(七)_构造方法_02

def f(n):
if n > 0:
return n + f(n-1)
else: # n <= 0
return 0
print(f(3))
输出:6

一入python深似海,从此妹纸是路人(七)_构造方法_03

解析:

f(3)

= f(2) + 3

= f(1) + 2 + 3

= f(0) + 1 + 2 + 3

= 0 + 1 + 2 +3


3、斐波那契函数: 1,1,2,3,5,8... 项

假设我定义这个序列的第n项为函数f(n)

f(n) = f(n-1) + f(n-2)
def f(n):
if n <= 1:
return n
else:
return f(n-1) + f(n-2)
print(f(3))
输出:2

一入python深似海,从此妹纸是路人(七)_构造方法_04

解析:

f(3)

= f(1) + f(2)

= 1 + f(0)+f(1)

= 1+ 1 +1

= 3

---- f(0) 必须是0 f(1) 必须是1


4、斐波那契序列 写出前面10项的序列

def f(n):
if n <= 1:
return n
else:
return f(n-1) + f(n-2)
lst = []
for i in range(1,11):
lst.append(f(i))
print(lst)
输出:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

一入python深似海,从此妹纸是路人(七)_构造方法_05


二、类和对象

1、为啥要使用类和对象?
  • 1)方便复用;
  • 2) 方便扩展;
  • 3) 方便维护;

def make_yazui():
print(鸭嘴制作完成)
def make_erduo():
print(鸭耳制作完成)
make_yazui()
make_erduo()
输出:鸭嘴制作完成
鸭耳制作完成

def make_zhuzui():
print(猪嘴制作完成)
def make_zhuer():
print(猪耳朵制作完成)
make_zhuzui()
make_zhuer()
输出:猪嘴制作完成
猪耳朵制作完成

一入python深似海,从此妹纸是路人(七)_类名_06


面向过程 ---- 过程

面向对象 ---- 对象 谁来帮我完成这件事

面向对象的三大特征:封装 继承 多态


类:总称 ---抽象的概念

对象:实实在在具体的

举例:

水果----

车厘子 橘子 苹果 草莓 香蕉---对象


object是python里所有类的最顶级的父类

类名习惯上首字母大写

类的定义:

class 类名(): # 类名 或 类名(object)

pass

例:

class Hero(): # 还可以写成HeroHero(object)

pass



创建对象: 类名()

创建对象/实例化对象 --- 一个类可以创建很多个对象

class Hero():
pass
hero1 = Hero()
hero2 = Hero()
hero3 = Hero()
print(id(hero1))
print(id(hero2))
print(id(hero3))

一入python深似海,从此妹纸是路人(七)_创建对象_07


class Hero():
pass
hero = Hero()
hero.name = wang # 对象名.属性 = 值
hero.age = 30
# # 获取属性
print(f名字是hero.name,年龄是hero.age岁)
输出:名字是wang,年龄是30岁

一入python深似海,从此妹纸是路人(七)_创建对象_08


2、方法

class Hero(object):
def move(self): # 方法
print(正在前往事发地点……)
hero1 = Hero()
# 获取方法 对象名.方法名()
hero1.move()
hero2 = Hero()
hero2.move()
输出:正在前往事发地点……
正在前往事发地点……

一入python深似海,从此妹纸是路人(七)_创建对象_09



三、构造方法

__init__():初始化 系统自带的--手机一开机我就有的功能

在创建对象(实例化对象)会自动调用该方法----即拥有这个方法的所有东西


类属性:在类的内部,在方法之外

实例属性:在方法内部 "self.变量名= 值",实例属性一般在__init__()

方法里self参数一定是第一个参数,对象自动传参给self

class A:
def __init__(self):
print(哈哈)
a = A()
输出:哈哈

一入python深似海,从此妹纸是路人(七)_构造方法_10

class Hero():
# money = 10000 # 类属性
def __init__(self):
self.name = 奥特曼 # 实例属性
self.hp = 200 # 生命值
self.at = 450 # 战斗力

def move(self):
print(fself.name正在移动中...)

def attack(self):
print(fself.name的生命值是self.hp,发出了一招战斗,战斗力为self.at)
hero1 = Hero()
hero1.move()
hero1.attack() # 对象可以访问实例属性
输出:奥特曼正在移动中...
奥特曼的生命值是200,发出了一招战斗,战斗力为450

hero2 = Hero()
hero2.move()
hero2.attack()
输出:奥特曼正在移动中...
奥特曼的生命值是200,发出了一招战斗,战斗力为450

一入python深似海,从此妹纸是路人(七)_构造方法_11


类的封装 ---- 用统一模板,实现千人千面 -----框架一样,数值(血肉)不一样

class Hero():
def __init__(self, name, hp, at):
self.name = name # 实例属性
self.hp = hp # 生命值
self.at = at # 战斗力

def move(self):
print(fself.name正在移动中...)

def attack(self):
print(fself.name的生命值是self.hp,发出了一招战斗,战斗力为self.at)
hero1 = Hero(1号,800,300)
hero1.move()
hero1.attack() # 对象可以访问实例属性
输出:1号正在移动中...
1号的生命值是800,发出了一招战斗,战斗力为300

hero2 = Hero(2号,500,200)
hero2.move()
hero2.attack()
输出:2号正在移动中...
2号的生命值是500,发出了一招战斗,战斗力为200

一入python深似海,从此妹纸是路人(七)_创建对象_12


三、析构方法

__del__()

作用:主要是销毁/删除临时的变量

class Person:
def __init__(self):
print(这是构造方法)
def __del__(self):
print(被销毁了) # 析构方法
p = Person()
print(哈哈)
print(哈哈)
print(哈哈)
输出:这是构造方法
哈哈
哈哈
哈哈
被销毁了

一入python深似海,从此妹纸是路人(七)_类名_13

class Person:
def __init__(self):
print(这是构造方法)
def __del__(self):
print(被销毁了) # 析构方法
p = Person()
del p # 删除对象时,触发__del__()调用
print(哈哈)
print(哈哈)
print(哈哈)
输出:这是构造方法
被销毁了
哈哈
哈哈
哈哈

一入python深似海,从此妹纸是路人(七)_构造方法_14

str(): 把其它类型转换为字符串类型

__str__() 打印对象时,设置输出该方法的返回值

class A:
def __str__(self):
return 哈哈
a = A()
print(a)
输出:哈哈

一入python深似海,从此妹纸是路人(七)_构造方法_15

以上是关于一入python深似海,从此妹纸是路人的主要内容,如果未能解决你的问题,请参考以下文章

#一入python深似海,从此妹纸是路人

一入python深似海,从此妹纸是路人

一入pythn深似海,从此妹纸是路人

一入python情似海,从此妹纸是路人

一入python情似海,从此妹纸是路人

5.21 - 一入Python深似海,从此节操是路人