一、注释

单行注释		#
多行注释     """ """		

二、运算符
1,算术运算符:

    +	加法运算符
	-	减法运算符
	*	乘法运算符
	/	除法运算符
	%	求模(余)运算符
	//	整除运算(地板除法)
	**	幂次方

2,关系(比较)运算符

    >
	<
	>=
	<=
	==
	!=

3,逻辑运算符

    与(并且) and
	或(或者) or
	非(取反) not

4,所属运算符

in		# 变量 in 容器
not in

5,赋值运算符

=
	+=		# a += 10 <==> a =  a + 10
	-=
	*=
	/=
	//=
	%=
	**=

6,三目运算符:

表达式? 变量1 : 变量2
	# 其他编程语言中的三目运算符
	int a = 10 <  8 ? 20 : 40;	
	# python中
	变量1 if 表达式 else 变量2

三、选择结构

单分支
    if 条件:
		# 如果条件成立,则执行缩进后的代码 
双分支
	  if 条件:
		# 如果条件成立,则执行if中的代码
	else:
		# 如果条件不成立,则执行这儿(else)的代码
多(三)分支
	if 条件1:
		# 如果条件1成立,则执行if中的代码
	elif 条件2:
		# 如果条件1成立,则执行这儿的代码
	elif 条件3:
		# 如果条件1成立,则执行这儿的代码
	……
	[else:
		# 剩余情况,执行这儿的代码
		

四,循环结构

while循环
	
	while 条件:
		# 执行循环体
for循环
	python的for循环,本质是一种for in结构的foreach循环,也就是是一种迭代结构
	python提供的for循环,想法就是用来迭代可迭代对象(Iterable)的数据的遍历的。

for 临时变量 in Iterable:
	# 每一次迭代的结果会保存在这个临时变量中
	print(临时变量)

五、常见容器

列表(list):	
	列表的定义:
		有两种方式:通过弱数据类型语言的特点完成
			ls = [12,34,45,88,99]
		第二种,就是调用一个全局函数
			list()
			list([元素1, 元素2, ……, 元素n])
		
set:
	一般集合都是使用hash表实现,
	无序且不重复!!!!
定义集合
	s = {值1, 值2,…… 值n}	# set定义是,不能为空,为空表示一个空字典
	
	ssss = set([1,2,3,4,45,5]) # 使用set函数完成list转换为set
	同样的道理
	list({1,3,2,43,44,4,5})		# 将set转换为list

元组(tuple)
	固定的值,不可变数据类型,类似于java、C这些中枚举类型

字典(dict):
	注意,python中的字段也是一个{}形式,只是里面的元素,不是一个个的值
	而是一对键值对	
	d = {"name": "张三", "age": 34, "nickname": "法外狂徒"}

六、函数

什么是函数:
	就是具有名称的一个功能代码的集合
python如何定义函数:
		 函数名称的命名规范,遵循变量命名规范!!!!
	def 函数名称([参数列表]):  # define function 定义函数
		函数体
		如果有返回值,则使用return关键字返回函数结果
		return 返回值
调用函数:
	函数名称([实参列表]
	
局部变量(本地变量):
	定义在函数内部的变量叫做局部变量,作用域是当前函数

全局变量:
	直接定义模块(py文件)中的变量,叫做全局变量

return关键字:
	值存在于函数内部,函数如果访问到return关键字,则立刻返回


递归(recursion):
本质是一种解决问题的方案。

七、切片:
切片是python提供,用来切割字符串的一种方式
切片不仅仅是针对字符串,有序序列(list、tuple、字符串)

字符串[下标]

字符串[start:end]		# 切割字符串,注意:[start, end),默认步长是1
字符串[start:end:step]		# 切片操作时,指定步长

注意:注意,切片不会下标越界;
默认步长是1,可以指定,如果指定为正数,则表示从左向右切
	但是如果指定为负数,表示从右向左切
如:s[::-1],表示翻转字符串的顺序,类似于s.reverse()

八、内置模块

 - math    - random      - os 
 - sys      - datetime   - date 
 - calendar  - hashlib 	 - hmac
   等等 

九、对象序列化
对象序列化:
对象:抽象概念
如果我们要传输对象,就需要将对象由逻辑概念转换为真实存在的数据(字符串、字节)
对象反序列化:
将物理状态的数据转换为逻辑状态

python提供了两个对象序列化和反序列化的模块
pickle:对象 <> 字节数据
json: 对象 <
> json

pickle:
pickle.dump(obj, file):对象持久化(先序列化,在持久化)
pickle.load(file):反持久化,将数据从磁盘重新读成对象

picke.dumps(obj):对象序列化
pickle.loads(bytes):反序列化对象

json模块:
ison.dump(obj, file):对象持久化(先序列化,在持久化)
ison.load(file):反持久化,将数据从磁盘重新读成对象

ison.dumps(obj):对象序列化
ison.loads(bytes):反序列化对象

十、面向对象
类(class):对一些相似特性的事物的抽象总结,抽象概念。
对象(object):一类事物的一个具体案例,实实在在的案例(实例)
定义类:
python定义类使用,class关键定义。

class 类名称:	# 类名称的命名规范遵循大驼峰法
class 类名称(父类):
class 类名称(Object):

面向对象的三大特征:
封装:

在面向对象中:
	1、所有的面向对象相关功能,封装在一个类里面
	2、在一个类中,将属性私有化,外界不允许访问属性,
		一般通过提供公开的方法(getter、setter)来访问和设置

封装的本质:就是对类中属性的数据的保护,不允许外界非法访问
	只允许,通过提供的公开的方式来访问数据!!!

将属性私有化之后,如何在外界访问该属性?

1、直接提供get和set方法
2、将get和set再次包装一把,之后使用类似于属性的方法私有的属性
3、使用@property的装饰器完成封装
class User(object):

    def __init__(self):
        # python中,在属性名称或者方法名称前面加上__,表示私有化该属性或者方法
        # 此时在该类的外部,将无法访问到私有的属性和方法
        self.__name = "刘建宏"
        self.__age = 16
        self.__gender = "男"
        self.__email = "110@qq.com"
        self.__tel_phone = "110"

    def get_name(self):
        return self.__name

    def set_name(self, name):
        self.__name = name

    def get_age(self):
        return self.__age

    def set_age(self, age):
        self.__age = age

    def say(self):
        print("我叫{},我说了句话".format(self.__name))
        print("这句话,我不爱听,所以我难过")
        self.__cry()

    def __cry(self):
        """该方法私有,私有的方法,就是在类内部使用的"""
        print("我哭了,我很难过")


if __name__ == '__main__':
    u1 = User()
    # u1.say()
    # print(u1.__name)
    # u1.name = "刘帅哥"
    # print(u1.name)

    # 通过getter、setter访问和设置属性
    print(u1.get_name())
    u1.set_name("张秋硕")
    u1.set_age(19)
    print(u1.get_name())
    print(u1.get_age())
    # Python的封装并不算特别完美
    # print(u1._User__age)

继承

后代会继承先代的特征或者特征
子类会继承父类的一些方法(父类允许继承的方法)
class RichMan(object):

    def __init__(self):
        # 私有属性无法继承
        self.__name = "阿爸"
        self.money = 40000000
        self.company = "alibaba"

    def say(self):
        print("哎,生意不好做啊,我对钱不感兴趣,我最后悔的事,就是创建了公司")

    def __tell(self):
        print("这些是我的悄悄话,我不想任何人知道")


# python允许多继承
class Son(RichMan, object):
    pass


if __name__ == '__main__':
    s = Son()
    print(s.money)
    print(s.company)
    # print(s.__name)
    s.say()
    # s.__tell()

多态

面向对象中,多态:父类引用指向子类实例的现象!

ArrayList al = new ArrayList();		// 创建一个ArrayList对象
List list = new ArrayList();		// 父类引用指向子类实例的现象!!!

十一、python高级
生成器(generator):
列表推导式,
优点:可以通过一段代码,生成我们想要的列表数据,非常强大
缺点:如果数据量多的时候,直接生成数据,内存太大
因此python提供了新的列表生成方式,这个方式就是列表生成器

ls = []


def get_prime():
    for i in range(2, 101):
        flag = is_prime(i)
        if flag:
            # ls.append(i)
            yield i         # yield虽然看起来和return很像,但是注意,不一样


def is_prime(num):
    for j in range(2, num):
        if num % j == 0:
            # 不可能是质数
            return False
    return True

# res = get_prime()
# print(ls)
# print(res)
# print(next(res))
# print(next(res))

# for i in res:
#     print(i)

生成器的遍历:
使用for循环可以遍历生成器
for 变量 in generator:
print(该变量每一次循环就是一个生成器的值)
第二种列表生成器的写法:
如果列表推导式过于复杂,想使用这种方式[表达式]非常困难
针对于这种情况,一般使用函数来完成该列表的初始化

将函数转换为列表生成,使用关键字yield
注意:当函数转换为列表生成器时,函数的执行顺序

迭代器(Iterator):
可以通过next函数调用,并且返回下一个值的对象
可迭代对象(Iterable):
能够被循环调用,返回下一个值的,可迭代对象
字符串、列表、元组、字典、集合
闭包(closure):
能够方法函数内部的变量的函数,被称为闭包

闭包:导致函数常驻内存,无法被释放!!!!
局部变量全局化:避免了全局污染!!!

装饰器:
装饰者设计模式的体现,当我们对原有功能不能满足的时候,
我们可以通过装饰原有代码,来实现代码增强

	python提供的装饰器(Decorator),就是强化和装饰原有函数功能,
	将函数功能加强的一种语法

    python的装饰器,它运行流程

十二、异常处理
非正常的一种软件奔溃的现象,称为异常
异常进行处理,本质是一种软件的容错性

抓捕异常:

 	判断代码可能会出现异常
     	try:	
	可能出异常的代码	
     	except:
	可能出现的异常
def main():
	y_o_n = input("是否退出程序(y/n)?")
	while y_o_n != "y":
		print("请输入一下信息,用空格分开")
		input_str = input("性别 体重(kg) 身高(cm) 年龄: ")
		str_list = input_str.split(" ")
		try:
			gender = str_list[0]
			weight = float(str_list[1])
			height = float(str_list[2])
			age = int(str_list[3])

			if gender == "男":
				bmr = (13.7*weight)+(5.0*height)-(6.8*age)+66
			elif gender == "女":
				bmr = (9.6*weight)+(1.8*height)-(4.7*age)+655
			else:
				bmr= -1

			if bmr!= -1:
				print("你的性别:{},体重:{}公斤,身高:{}厘米,年龄:{}岁".format(gender,weight,height,age))
				print("你的基础代谢率:{}大卡".format(bmr))
			else:
				print("暂时不支持该性别")
		except ValueError:
			print("请输入正确信息")
		except IndexError:
			print("输入信息量过少!")
		except:
			print("程序异常!")
			
		print()
		y_o_n=input("是否退出程序(y/n)?")


if __name__ == '__main__':
	main()

来源:当兵回来你可还在

物联沃分享整理
物联沃-IOTWORD物联网 » Python总结

发表评论