版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、函数
"""
函数的概念:
函数是一组Python语句的组合,他们可以在程序中使用一次或者多次。
大大提高开发的效率,减少复制粘贴的操作
Sublime
函数定义的格式:
def 函数名():
语句
函数调用的格式:
函数名()
"""
def fozu():
print(" _ooOoo_ ")
print(" o8888888o ")
print(" 88 . 88 ")
print(" (| -_- |) ")
print(" O\\ = /O ")
print(" ____/`---'\\____ ")
print(" . ' \\| |// `. ")
print(" / \\||| : |||// \\ ")
print(" / _||||| -:- |||||- \\ ")
print(" | | \\\\\\ - /// | | ")
print(" | \\_| ''\\---/'' | | ")
print(" \\ .-\\__ `-` ___/-. / ")
print(" ___`. .' /--.--\\ `. . __ ")
print(" ."" '< `.___\\_<|>_/___.' >'"". ")
print(" | | : `- \\`.;`\\ _ /`;.`/ - ` : | | ")
print(" \\ \\ `-. \\_ __\\ /__ _/ .-` / / ")
print(" ======`-.____`-.___\\_____/___.-`____.-'====== ")
print(" `=---=' ")
print(" ")
print(" ............................................. ")
print(" 佛祖镇楼 BUG辟易 ")
print(" 佛曰: ")
print(" 写字楼里写字间,写字间里程序员; ")
print(" 程序人员写程序,又拿程序换酒钱。 ")
print(" 酒醒只在网上坐,酒醉还来网下眠; ")
print(" 酒醉酒醒日复日,网上网下年复年。 ")
print(" 但愿老死电脑间,不愿鞠躬老板前; ")
print(" 奔驰宝马贵者趣,公交自行程序员。 ")
print(" 别人笑我忒疯癫,我笑自己命太贱; ")
print(" 不见满街漂亮妹,哪个归得程序员?")
num = input("请输入星期数:")
if num == "1" or "3" or "5" or "7":
fozu()
elif num == "2" or "4" or "6":
fozu()
else:
print("输入有误!")
def num_judge1(n):
str1 = "1"
for i in range(n):
str1 = str1 + str(i + 1)
while True:
judge1 = input("请输入要执行操作:")
if (judge1 in str1) and (len(judge1) == 1):
return judge1
break
else:
print("操作有误,请重新选择:")
print(type(num_judge1(2)))
"""
函数的参数:
def 函数名()
语句1
如果定义参数是:*args,**kwargs
参数类型不限,个数也可以不限
1.*args 主要接受:数字,字符串,列表
2.**kwargs 主要接收 位置传参,如:字典
位置传参:
指定 某个 的值的多少
注意:
1.python中不存在重载
2.*args,**kwargs只是约定俗成的写法,就是说不是系统的规定
3.顺序传参,参数必须写在位置传参的前面 不能出现顺序参数和位置传参指向同一个形参
"""
#******************************************************************
def add1(*a,**b):
print(*a)
print(b)
add1(1,2,"ad","adff",{2},{1},"ad",{"w"})
add1(a = 1,b =2)
#******************************************************************
def add2(a,b):
print(a)
print(b)
#******************************************************************
"""
使用函数实现一个计算器:
1.由用户输入第一个值和第二个值:a,b
2.当用户回车的一瞬间,给出结果
比如:
请输入计算类型:*
请输入第一个值:4
请输入第二个值:5
打印:
结果是:20
"""
#******************************************************************
def add2(a,b):
print("结果是:%s" %(a + b))
def sub2(a,b):
print("结果是:%s" %(a - b))
def mul2(a,b):
print("结果是:%s" %(a * b))
def div2(a,b):
print("结果是:%s" %(a / b))
str1 = input("请输入计算类型:")
num1 = eval(input("请输入第一个数:"))
num2 = eval(input("请输入第一个数:"))
if str1 == "+":
add2(num1,num2)
elif str1 == "-":
sub2(num1,num2)
elif str1 == "*":
mul2(num1,num2)
elif str1 == "/":
if num2 == 0:
print("输入不合法!")
else:
div2(num1,num2)
else:
print("输入有误!")
#******************************************************************
"""
函数也是语句,可以嵌套使用
概念:
所谓的函数嵌套,是指在一个函数中调用了另外一个函数
"""
#******************************************************************
def fun1():
print("这是函数1")
fun2()
print("这里是函数1")
def fun2():
print("这是函数2")
fun1()
#******************************************************************
"""
局部变量:函数类别普通赋值得出的变量
在函数内部定义的变量
全局变量:函数外部赋值的变量
1.变量可以在多个函数中使用
2.若全局和局部变量名字一样,在函数中局部变量会暂时屏蔽全局变量
3.全局变量在函数中修改的问题
如果要在函数内部修改全局变量,需要用global函数进行声明
注意:
可变类型不需要额外声明,比如:列表可以直接通过append进行添加操作
"""
#******************************************************************
#******************************************************************
二、面向对象
""""""
C和前篇笔记学的内容,是面向过程的语言
#买电脑
第一种:
1.看配置:
查看电脑参数,内存,显卡,外观,价格
2.网上去搜
3.比价格
4.某东:mac 12800 某宝:9999做活动
5.电脑城:8888 电脑售卖元
6.买了电脑城 ———> 回家 ———> 蓝屏 ———> 返厂
7.等电脑回来
8.没了
第二种:
1.自己预定好价格,然后告诉我懂电脑的朋友
2.给钱他,他去买
3.开始LOL
面向对象和面向过程的区别:
1.面向过程,每一步都是亲力亲为,从上到下写代码
2.函数式编程,将功能封装,减少代码的重复复制
3.将代码和函数分类,然后调用
4.面向过程更容易被人接受,面向对象是抽象的
面向对象解决问题的重点:
1.面向对象解决问题的思想:
遇到问题不需要自己去解决,找个专业的工具,直接调用
类 和 对象
类:
类其实就是一个模板,里面封装了很多函数和方法(抽象的)
将多个对象的共同特征和行为抽象为一个类
对象:
是一个存在的实例,他是被类创建出来的
创建格式:
class 类名:
'各个函数和语句'
def _init_(self)
语句1
def run(self)
语句2
......
如何使用类:
对象 = 类名()
对象.run()
class:类的关键字
_init_:用来初始化,构造函数,在对象创建的时候自动调用
类中的函数和方法都属于对象的,可以通过对象去调用
"""
#*********************************************************************
创建一个Dog类
class Dog:
def __init__(self,name):
#self 代表的是当前实例或者对象
self.name = name
def show(self):
print("这是一只%s"%self.name)
hsq = Dog("哈士奇")
hsq.show()
#*********************************************************************
def show(self):
print("这是一只%s" % self.name)
hsq.show()
#*********************************************************************
"""
函数式编程和类编程的区别:
类编程:
1.创建一个对象
2.通过对象执行函数
函数式编程:
1.直接执行函数
按照这个场景,函数比类方便简单
场景2:
创建一个狗类:
跑 姓名 品种
分别使用函数实现 五只狗:
小金是一只金毛,它很会跑
小哈是一只哈士奇,它很会拆家
小单是一只单身狗,它很会吃狗粮
小迪是一只泰迪,它很会哭
小美是一只博美,它很会撒娇
"""
#*********************************************************************
class Dog1:
def __init__(self,name,pz):
self.name = name
self.pz = pz
def run(self):
print("%s是一只%s,它很会跑" % (self.name, self.pz))
def brk(self):
print("%s是一只%s,它很会拆家" % (self.name, self.pz))
def eat(self):
print("%s是一只%s,它很会吃狗粮" % (self.name, self.pz))
def cry(self):
print("%s是一只%s,它很会哭" % (self.name, self.pz))
def cop(name, pz):
print("%s是一只%s,它很会撒娇" % (name, pz))
jm = Dog1("小金","金毛")
jm.run()
#*********************************************************************
"""
注意:
self 代表当前对象,但是self这个单词也是约定俗成的,可以自己更换并且不用自己去传参
class Person(object):
#这种定义方式是新式类,显示的继承object:
class Person1:
#这种定义方式叫经典类,也是Python3的表示方法
面向对象的特征:
1.封装:将一段代码进行封装,实现代码的可重用性
2.继承:将类的共同属性进一步抽象,形成父类
3.多态:在Python中的并不多,定义类型与调用时不同
继承:
猫:喵喵叫 会跑 会跳 颜色
狗:汪汪叫 会跑 会跳 颜色
定义动物类: 叫 会跑 会跳 颜色
"""
#*********************************************************************
class animal:
def run(self):
print("会跑")
def jiao(self):
print("会叫")
class G(animal):
def __init__(self,name,jiao,color):
self.name = name
self.jiao1 = jiao
self.color = color
def jiao(self):
print("会%s叫"%self.jiao1)
def show(self):
print(self.color)
class M(animal):
def __init__(self, name, jiao, color):
self.name = name
self.jiao1 = jiao
self.color = color
def jiao(self):
print("会%s叫" % self.jiao1)
def show(self):
print(self.color)
if __name__ == "__main__":
m1 = M("小白", "喵喵", "黑色")
m1.jiao()
m1.show()
# *********************************************************************
"""
if __name__=="__main__"
__name__:用来记录名字的,程序中有些代码是用来调试的,不希望被别人看见
,定义一个main(主入口),把调试代码放到它的下面
"""