1. 输入/格式化输出: help('FORMATTING') 可以查看各类的不同要求
1 2 3 4 | 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
1 2 3 4 | a = 1 b = 2 c = 3 f '{a} + {b} = {c}' |
2. 变量:
大小写敏感;
第一个字符必须是字母 或 下划线;
其他部分必须是数字/字母/下划线;
不能是关键字(keywords)
3. 查看函数的帮助信息:
1 2 | help ( 'input' ) help ( 'keywords' ) |
4. 注释: 有下面两种方式:
a. 行注释;
b: 函数注释,可以通过help(fun) 方式 打印出 这部分注释信息,3 个 ‘ 或者 " 都可以;
1 2 3 4 5 6 7 8 9 10 11 12 | #行注释 a = 1 # 定义变量 ###函数注释 def fun(start, end): ''' 函数中解释: 连续数【相乘); ''' x = 1 for i in range (start, end): x = x * i print (x) |
5. 代码相连:
1 2 3 4 | 1 + 2 + 3 + 4 + 5 #等价于 1 + 2 + 3 \ + 4 + 5 |
6.变量类型:python 是弱类型语言,主要包含下面4种类型:int/ float/string/bool .
1 2 3 | #变量类型判断 type ( print ) type ( 10 ) |
7. 下面一些运算符可以通过 help("==") 中得到;
算术运算符: + - * / ,%, //(向下取整), ** (幂)
比较运算符: ==, !=, >, >= , < , <=
赋值运算符: =, +=, -= , *=, /=, //=, **=, %=, :=(海象运算符,python3.8 后支持)
位运算符: >>(二进制左移), <<(右移), &, | , ~(按位取反),^(XOR)
逻辑运算符: and , or, not
成员运算法: in, not in
身份运算符: is, is not # 用于比较两个存储的单元的位置; == 用于比较两个变量的值
8. 数据结构:
列表(list) : 数据之间以逗号(,) 分割, 整个列表用[] 包围;细节参考help(list)
1 2 3 | 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 条件判断:
1 2 3 4 5 6 | if condition: #operation1 elif condition: #operation2 else : #operation 3 |
10 循环:for/ while, 其中可以使用break/ continue
1 2 3 4 5 6 7 | #for for 变量 in 列表: #operation1 #while while 条件: #operation |
11. 迭代:解释型语言,可以在执行时候将迭代的过程展开;
range: range (start, end, step = 1);
iter: 类似于C++ 中迭代器,将序列化对象不使用index,进行遍历;还有就是使用next 方法遍历所有元素;
zip: 依次从这些对象中分别拿出一个元素,拼成一个元素,返回的是元组,元素数量不同时候,取最小序列;还有zip_longest(itertools)
1 2 3 | names = [ "Ming" , "hong" ] ages = [ 18 , 21 ] dict ( zip (names, ages)) #这算是非常常用的小技巧 |
12. 自定义函数:函数返回值 可以为空,直接return 也可以的;
1 2 3 4 | def func(a, b): '''函数解释 ''' return a + b |
可变参数(mutable): list, dict
不可改(unmutable) 参数: strings, tuples, numbers 是不可更改对象
也支持默认参数,例如自带的range 包含3个参数,只是有默认参数,与C++ 类似;
不定长参数:定义不定长参数时,可在参数前加* 或 **, 当传入参数多与形参时候,超出部分计入不定长参数:
- * : 形参前加*, 接收的参数转换为元组tuple
- ** : 形参前加**, 接收的参数转换为字典dict, 但是参数必须要以赋值形式传入
1 2 3 4 5 | >>> def func3(x, * y, * * z): ... print ( "x:" , x, type (x)) ... print ( "y:" , y, type (y)) ... print ( "z:" , z, type (z)) ... |
参数作用域:主要是全局变量定义 global 定义全局参数
1 2 3 4 5 | result = 55 def func4(a, b): global x, y x = a; y = b; result = a + b; return |
还有globals() 的用法:
1 2 3 4 5 6 7 8 9 10 11 12 | #打印所有全局变量 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 实现
1 2 3 4 | 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 : 定义内置参数
1 2 3 4 5 6 7 | class People: def __init__( self , name, hp, damage): self .name = name self .hp = hp self .damage = damage p1 = People( "ming" , 12 , 2 ) |
类中继承:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
1 2 3 4 | import <package> import <module> from <package> import <module or sub - package or object > # 变量 函数 from <module> import < object > |
常见的方法:
1 2 | from functools import reduce , partial from operator import add, mul |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)