python 基础知识
说明:
- 当前版本:
3.7.0
- 所有示例都是写在文件中
.py
- 参考教程:Python教程
- 执行文件
python index.py
- 所有的代码都在同一个文件
index.py
中,各部分引用变量一致。
起步
-
输出一个
hello world
;print("hello world")
注意:在
.py
文件中代码是不能随意缩进的,不然执行报错 -
用户输入;
name = input("please input your name \n"); print("welcome",name)
执行文件后,等待用户输入,按
enter
结束输入,打印welcome XXX
.
注意:- 用户输入的值类型是字符串
-
if...else
语句# if block if name=="admin": print("欢迎管理员登陆!") else: print("登陆成功!")
说明:
-
if...else
语句以:
结束,语句块缩进表示; -
#
表示注释,描写代码块的功能。
-
-
数据类型
整数、浮点数、字符串、布尔值、空值# '\' 转义 print("hello \n world") # '\t' 制表符 '\n' 换行 ‘r'XXX'’ 定义内容部不专一 print(r"hello \n world"); # ‘'''xxx'''’ 格式化文本换行 print('''hello world''') # 布尔运算符 and or not print(8>5 and 8<10)
说明:
- 浮点数科学计数法表示:
2e10
- 布尔值大写的
True
/False
; - 变量命名是大小写敏感的,如:
name
/Name
不同。 - 空值表示为
none
; - 变量定义遵循基本的规则:英文、数字、下划线,不能以数字开头。
- 常量定义不能改变的变量,用大写表示。
- 浮点数科学计数法表示:
-
字符串
# ord 对单个字符编码 chr 对单个字符的解码 Name = ord('国') print(Name) # "国" 22269 Name_ = chr(Name) print(Name_) # b'xx' 表示字节码 # "中国" b'\xe4\xb8\xad\xe5\x9b\xbd' print("中国".encode("utf-8")) # len 计算字符长度 print(len("hello world")) # 文本格式化 print("%d周年" % 70) # format() 格式化方法 print("{0}周年".format(70))
说明:
-
encode()
编码;decode()
进行解码; - 指定编码类型,如果超出编码范围,就会报错;中文超出
ASCII
; -
%s
字符串;%d
整数;%f
浮点数;%x
十六进制数;%%
转义输出%
-
format()
格式化方法;
-
-
数据结构
list
# list names = ["花花","小亮","明总"] print(names[0]) # udpate names[0] = 70; # tuple 元组 names_ = (1949,2019,70) print(names_[2])
说明
-
append()
往后添加一个元素;insert(index,name)
插入元素到指定位置;pop()
删除末尾元素; - 元组具有不可变性,即其中的元素一经初始化是不能改变的;
- 元组中元素指向的是一个对象,那对象属性的改变是没有关系的。
- 元组定义一个元素是
(12)
会存在算数歧义,为了区分如此声明(12,)
-
-
循环
# for ... in 循环 for item in names: print(item) # while 循环 num = 3 while num>1: print(num*2) num = num-1
说明:
-
range(11)
生成0-10
的整数序列; -
break
跳出循环; -
continue
跳过本次循环;
-
-
使用
dict
字典。
类似对象、以键值对存储数据;# dict user = {"袁明":23,"鲁花":32,"祖国":70} print(user["祖国"]) # keys() / values() / items() for key in user.keys(): print(key,user[key]) # set 只存储值,不重复 age = set([23,32,70,32]) print(age)
说明:
-
... in ...
判断key
值是否存在于字典中; -
get()
获取值,不存在返回none
,接受第二个参数作为不存在时的返回值; -
pop()
删除一个键值对; -
add()
向set
中添加一个值;remove()
则移除一个值; -
values()
返回字典值集合;keys()
返回键值集合;items()
按key,value
进行迭代处理;
-
-
函数
# 系统内置函数 , 如 abs() 求绝对值 abs(-100) # 自定义函数 def add(num1,num2): return num1+num2 print(add(100,1)) # 返回多个值,类似解构赋值 def add(num1,num2): return num1,num2 res1,res2 = add(100,1) print(res1,res2) # 函数可变参数 def add(*nums): total = 0 for n in nums: total+=n return total print(add(3,4,5,6)) # 函数关键参数,即必须传入的参数和可选参数, def addUser(name,**other): print({"name":name,"other":other) addUser("祖国",age=70,desc="生日快乐!") # 参数传入时,可传入 dict , info = {"age":70,"desc":"生日快乐!"} addUser("祖国",**info) # 命名关键字,即指定可选参数的名称 ,以下 只能传递 'age'属性 def addUser(name,*,age): print({"name":name,"other":age}) addUser("祖国",age=70)
说明:
-
max()
最大值;内置函数规定了参数类型,参数个数,不合规则就报错; - 没有给定返回值的函数,默认返回
none
; - 返回多个值时,可以进行解构复制,赋值给变量进行使用;
- 函数参数定义,接受默认参数定义
def add(num1,num2=70)
-
模拟可变参数:
- 传入
list
对象,模拟传递不确定个数的参数;
-
*
定义参数为可变参数;
-
**
定义参数为可选参数;
- 传入
- 参数传入时,
**
会转换对象,按键值对传入到**other
-
-
尾递归优化
之前js 也写过:es6 函数扩展
代码比较短,贴一下://尾调用优化 function factorial(n,total){ if(n===1) return total; return factorial(n-1,n*total); }
意义在于每次调用都能获得累积值,并作为参数传入下一次调用函数中。
# total作为上一次函数调用后计算的值,传入下一个参数 def factorial(n,total): if n==1: return total return factorial(n-1,n*total) print(factorial(10,1))
注意:
-
if
语句、while
语句、函数定义等含有语句块的都有:
,且语句块需要缩进;
附所有代码执行结果:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。