1. 输入/格式化输出: help('FORMATTING') 可以查看各类的不同要求
each = input("pls input each value\n") print('each value is {}'.format(each)) count = input("pls input the count\n") print('{} * {} result is {}'.format(each, count, int(each) * int(count)))
格式化字符串:f
a = 1 b = 2 c = 3 f'{a} + {b} = {c}'
2. 变量:
大小写敏感;
第一个字符必须是字母 或 下划线;
其他部分必须是数字/字母/下划线;
不能是关键字(keywords)
3. 查看函数的帮助信息:
help('input') help('keywords')
4. 注释: 有下面两种方式:
a. 行注释;
b: 函数注释,可以通过help(fun) 方式 打印出 这部分注释信息,3 个 ‘ 或者 " 都可以;
#行注释 a=1 # 定义变量 ###函数注释 def fun(start, end): ''' 函数中解释: 连续数【相乘); ''' x = 1 for i in range(start, end): x = x * i print(x)
5. 代码相连:
1+2+3+4+5 #等价于 1+2+3\ +4+5
6.变量类型:python 是弱类型语言,主要包含下面4种类型:int/ float/string/bool .
#变量类型判断 type(print) type(10)
7. 下面一些运算符可以通过 help("==") 中得到;
算术运算符: + - * / ,%, //(向下取整), ** (幂)
比较运算符: ==, !=, >, >= , < , <=
赋值运算符: =, +=, -= , *=, /=, //=, **=, %=, :=(海象运算符,python3.8 后支持)
位运算符: >>(二进制左移), <<(右移), &, | , ~(按位取反),^(XOR)
逻辑运算符: and , or, not
成员运算法: in, not in
身份运算符: is, is not # 用于比较两个存储的单元的位置; == 用于比较两个变量的值
8. 数据结构:
列表(list) : 数据之间以逗号(,) 分割, 整个列表用[] 包围;细节参考help(list)
ls_1 = list() ls_2 = [] ls_3 = [1, 2, 3, 4, 5, 'apple', 0.001]
列表索引index: 左->右 0, 1, 2, 3... ; 右->左 -1, -2, -3, -4...; 切片: list[first_index: last_index+1] ; #相当于是前闭后开, 空时默认为头/尾 列表脚本操作符: + (列表组合), * (列表重复), in
列表函数: len, min(#必须要同种类型),del(删除)
列表方法: help(list) 有具体细节
append(#添加一个元素), count, entend(添加一组列表到后面),index, insert(参数是位置,值), pop,remove(#参数是元素),reverse, sort(要同种类型
元组(tuple) : 不可以修改, 数据也用(,) 隔开, 整个元组用() 包围;细节参考 help(tuple)
元组如果只有一个元素定义时候,tuple_1=[1,] ## 要有,
其他的操作类似list;
字典(dictionary): 元素为key:val, 每组元素用,隔开, 整个字典用大括号{} 包围; 细节参考help(dict)
集合(set) : 无序的不重复的序列;元素之间使用, 隔开,整个集合使用大括号{} 包围, 细节参考help(set)
注意点:
#创建空集合时候,要使用set(), 不能直接使用{}, 这个是用来创建空字典的; s_a=set()
两个集合之间使用 & , | , ^ 得这两个集合之间的 集合中 共有的,统合,独有的;
remove/ discard : 都是删除元素,但是discard 用来移除元素时候,如果不存在元素,不会报错;
9 条件判断:
if condition: #operation1 elif condition: #operation2 else: #operation 3
10 循环:for/ while, 其中可以使用break/ continue
#for for 变量 in 列表: #operation1 #while while 条件: #operation
11. 迭代:解释型语言,可以在执行时候将迭代的过程展开;
range: range (start, end, step = 1);
iter: 类似于C++ 中迭代器,将序列化对象不使用index,进行遍历;还有就是使用next 方法遍历所有元素;
zip: 依次从这些对象中分别拿出一个元素,拼成一个元素,返回的是元组,元素数量不同时候,取最小序列;还有zip_longest(itertools)
names=["Ming", "hong"] ages=[18, 21] dict(zip(names, ages)) #这算是非常常用的小技巧
12. 自定义函数:函数返回值 可以为空,直接return 也可以的;
def func(a, b): '''函数解释 ''' return a + b
可变参数(mutable): list, dict
不可改(unmutable) 参数: strings, tuples, numbers 是不可更改对象
也支持默认参数,例如自带的range 包含3个参数,只是有默认参数,与C++ 类似;
不定长参数:定义不定长参数时,可在参数前加* 或 **, 当传入参数多与形参时候,超出部分计入不定长参数:
- * : 形参前加*, 接收的参数转换为元组tuple
- ** : 形参前加**, 接收的参数转换为字典dict, 但是参数必须要以赋值形式传入
>>> def func3(x, *y, **z): ... print("x:", x, type(x)) ... print("y:", y, type(y)) ... print("z:", z, type(z)) ...
参数作用域:主要是全局变量定义 global 定义全局参数
result=55 def func4(a, b): global x, y x=a; y=b; result=a+b; return
还有globals() 的用法:
#打印所有全局变量 print(globals()) #可以打印出所有全局变量的值; #使用globals() 方式建立全局变量 def fun5(): dfg=['aa', 'bb', 'cc'] for i in dfg: #globals()[i] = (i) globals()[i] = {i:3} ##{} 还是() 取决定义的类型 return aa, bb, cc w, x, y = fun5()
函数调用方式:
默认是按照函数定义顺序传递参数;
关键字参数: 也可以直接给参数赋值,这样就不用按照定义顺序;
调用函数时,部分参数锁定,用partial 实现
from functools import partial, reduce from operator import mul, add, xor new_func = partial(mul, 3) print(new_func(4))
13. 创建自己的对象- 类
定义一个类:约定私有变量名带_;
class : 创建类的关键字 name : 类名 def __init__ : 属性,类似C++ 中构造函数; def func(): 类中定义函数(方法) self : 定义内置参数
class People: def __init__(self, name, hp, damage): self.name = name self.hp = hp self.damage = damage p1 = People("ming", 12, 2)
类中继承:
class Hero(People): ##继承 People 父类 def __init__(self, name, hp, damage, country): #子类中如果定义了构造函数,就不会默认调用父类构造函数;否则会自己建立默认构造函数; #调用父类构造函数,调用时要保证子类与父类构造函数参数相同;; People.__init__(self, name, hp, damage) #继承父类属性,调用时必须要self;这里要显示调用,否则子类不会调用父类构造函数;因为子类已经定义了构造函数。 #super().__init__(name, hp,damage) #这种方法也会调用父类; self.country = country def func1(self): #定义类方法时候,一定要加上self; #因为python 中同一个类会产生多个实例,那么在调用的时候就是通过第一个self参数区分是哪个实例调用该方法; #当然在实际调用过程中,self 不需要手动传递; print('name is {}'.format(self.name)) print('hp is {}'.format(self.hp)) print('country is {}'.format(self.country)) def func2(self): self.func1() #调用当前类方法时候要用self return
14 模块 与 包 :
module : 任何后缀为*.py 文件,模块名称就是文件名称 built-in module: python 编译器内置的函数,没有对应的.py 文件 package : python3.3 以上,任何文件夹都可以视为包 object: python 中所有东西都为对象,函数,类,变量
引入模块 或 包 有下面4中方式: 类似C include
import <package> import <module> from <package> import <module or sub-package or object> # 变量 函数 from <module> import <object>
常见的方法:
from functools import reduce, partial from operator import add, mul