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
语句、函数定义等含有语句块的都有:
,且语句块需要缩进;
附所有代码执行结果: