1.python基础—有这篇文章足够
编程语言与人类语言类似,与中国交流用汉语,与美国人交流用英语。人类与计算机交流就需要用编程语言。
编程 == 写代码,是一个动词,想让计算机干什么,就编写对应的代码。
编程语言分类
-
优点:最底层,速度最快
-
缺点:复杂,开发效率低
汇编语言,直接与硬件操作,采用英文缩写的标识符。
-
优点:比较底层,速度快。
-
缺点:复杂,开发效率低。
高级语言,编写的程序不能直接被计算机识别,必须经过转换才能被执行。
-
编译型语言执行速度快,不依赖语言环境运行,跨平台差
-
解释性语言跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行。
编程语言的流派(解释型、编译型)
-
编译类:一次性将代码编译为可以执行的文件,然后交给计算机执行。编译后的程序可以直接使用,执行效率高,依赖编译器,跨平台差。(C、C++、Delphi)
-
解释类:类似同声翻译,程序一边执行一边翻译因此效率较低,没有生产独立的可执行文件,所以不能脱离其解释器运行(跟老外讲话翻译必须在场)。(Python、Java、PHP、Ruby)
变量(储存数据的容器)
-
使用规则:先定义后调用
-
命名规则:
1.字母、数字、下划线的任意组合。
2.第一个字符不能是数字。
3.不能使用关键字。
变量创建的过程
当我们定义name = 'shi'时,程序做了什么?
-
开辟一块内存空间
-
将’shi‘放进这个空间。
-
让name这个变量指向存放’shi‘的地址(内存地址)
-
查看内存地址(id)
当修改变量的时候,程序做了什么?
>>> name = "oldboy"
>>> id(name)
4317182304
>>>
>>> name = "alex"
>>> id(name) # 如果只是在原有地址上修改,那么修改后内存地址不应该变化呀。
4317182360
程序重新申请了一块内存地址,将alex放进去,变量的指向从oldboy断开,指向新的Alex的内存地址。
-
变量的指向关系
>>> name1 = 'oldboy'
>>> name2 = name1 # 把name1赋值给name2,这样name2的值也是oldboy了
>>> print(name1,name2)
oldboy oldboy
>>>
>>> name1 = 'alex'
>>> print(name1,name2) #改了name1后,name2为何没跟着改?
alex oldboy
修改name1的值,相当于断开了name1到‘oldboy’的链接,重新建立name1和‘alex’之间的链接。在这个过程中,始终没有影响到name2和‘oldboy‘之间的关系,因此name2还是‘oldboy’,而name1变成了‘alex’。
特性
-
有序
-
有索引
-
可以切片
-
不可变
常用方法
def capitalize(self):
首字母大写
def casefold(self):
把字符串全变小写
>> > c = 'Alex Li'
>> > c.casefold()
'alex li'
def center(self, width, fillchar=None):
>> > c.center(50, "-")
'---------------------Alex Li----------------------'
def count(self, sub, start=None, end=None):
"""
S.count(sub[, start[, end]]) -> int
>>> s = "welcome to apeland"
>>> s.count('e')
3
>>> s.count('e',3)
2
>>> s.count('e',3,-1)
2
def encode(self, encoding='utf-8', errors='strict'):
"""
编码,日后讲
def endswith(self, suffix, start=None, end=None):
>> > s = "welcome to apeland"
>> > s.endswith("land") 判断以什么结尾
True
def find(self, sub, start=None, end=None):
"""
S.find(sub[, start[, end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
"""
return 0
def format(self, *args, **kwargs): # known special case of str.format
>> > s = "Welcome {0} to Apeland,you are No.{1} user."
>> > s.format("Eva", 9999)
'Welcome Eva to Apeland,you are No.9999 user.'
>> > s1 = "Welcome {name} to Apeland,you are No.{user_num} user."
>> > s1.format(name="Alex", user_num=999)
'Welcome Alex to Apeland,you are No.999 user.'
def format_map(self, mapping):
"""
S.format_map(mapping) -> str
Return a formatted version of S, using substitutions from mapping.
The substitutions are identified by braces ('{' and '}').
"""
讲完dict再讲这个
def index(self, sub, start=None, end=None):
"""
S.index(sub[, start[, end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
"""
def isdigit(self):
"""
S.isdigit() -> bool
Return True if all characters in S are digits
and there is at least one character in S, False otherwise.
"""
return False
def islower(self):
"""
S.islower() -> bool
Return True if all cased characters in S are lowercase and there is
at least one cased character in S, False otherwise.
"""
def isspace(self):
"""
S.isspace() -> bool
Return True if all characters in S are whitespace
and there is at least one character in S, False otherwise.
"""