在命令行窗口执行python
后,进入 Python 的交互式解释器。exit()
或 Ctrl + D
组合键退出交互式解释器。
如果在 Python 脚本文件首行输入#!/usr/bin/env python
,那么可以在命令行窗口中执行/path/to/script-file.py
以执行该脚本文件。
如果在 Python 脚本文件首行输入#!/usr/bin/env python
,那么可以在命令行窗口中执行/path/to/script-file.py
以执行该脚本文件。
默认情况下,3.x 源码文件都是 UTF-8 编码,字符串都是 Unicode 字符。也可以手动指定文件编码:
# -*- coding: utf-8 -*-
或者
# encoding: utf-8
注意: 该行标注必须位于文件第一行
_
。注:从 3.x 开始,非 ASCII 标识符也是允许的,但不建议。
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠\
来实现多行语句。
total = item_one + item_two + item_three
在 []
, {}
, 或 ()
中的多行语句,不需要使用反斜杠\
。
Python 可以在同一行中使用多条语句,语句之间使用分号;
分割。
import sys; x = ‘hello world‘; sys.stdout.write(x + ‘\n‘)
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上end=""
或别的非换行符字符串:
print(‘123‘) # 默认换行
print(‘123‘, end = "") # 不换行
/
总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 //
。//
得到的并不一定是整数类型的数,它与分母分子的数据类型有关系_
,_
是个只读变量在 2.x 中,普通字符串是以 8 位 ASCII 码进行存储的,而 Unicode 字符串则存储为 16 位 Unicode 字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u
。
在 3.x 中,所有的字符串都是 Unicode 字符串。
在 3.x 中,字符串和二进制数据完全区分开。文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示。Python 3 不会以任意隐式的方式混用 str 和 bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。
b
以示区分,例如 b‘abc‘
。bytes 转 str:
b‘abc‘.decode()
str(b‘abc‘)
str(b‘abc‘, encoding=‘utf-8‘)
str 转 bytes:
‘中国‘.encode()
bytes(‘中国‘, encoding=‘utf-8‘)
函数(Functions)是指可重复使用的程序片段。它们允许你为某个代码块赋予名字,允许你通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是所谓的调用(Calling)函数。
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def print_info(name, age):
"打印任何传入的字符串"
print("名字: ", name)
print("年龄: ", age)
return
print_info(age=50, name="john")
调用函数时,如果没有传递参数,则会使用默认参数。
def print_info(name, age=35):
print ("名字: ", name)
print ("年龄: ", age)
return
print_info(age=50, name="john")
print("------------------------")
print_info(name="john")
*
的参数会以元组的形式导入,存放所有未命名的变量参数。def print_info(arg1, *vartuple):
print("输出: ")
print(arg1)
for var in vartuple:
print (var)
return
print_info(10)
print_info(70, 60, 50)
**
的参数会以字典的形式导入。变量名为键,变量值为字典元素值。def print_info(arg1, **vardict):
print("输出: ")
print(arg1)
print(vardict)
print_info(1, a=2, b=3)
编写模块有很多种方法,其中最简单的一种便是创建一个包含函数与变量、以 .py 为后缀的文件。
另一种方法是使用撰写 Python 解释器本身的本地语言来编写模块。举例来说,你可以使用 C 语言来撰写 Python 模块,并且在编译后,你可以通过标准 Python 解释器在你的 Python 代码中使用它们。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py
。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 Python 标准库的方法。
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块,需要把命令放在脚本的顶端。
一个模块只会被导入一次,这样可以防止导入模块被一遍又一遍地执行。
搜索路径被存储在 sys 模块中的 path 变量。当前目录指的是程序启动的目录。
每个模块都有一个 __name__
属性,当其值是 ‘__main__‘
时,表明该模块自身在运行,否则是被引入。
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用 __name__
属性来使该程序块仅在该模块自身运行时执行。
if __name__ == ‘__main__‘:
print(‘程序自身在运行‘)
else:
print(‘我来自另一模块‘)
内置的函数 dir()
可以找到模块内定义的所有名称。以一个字符串列表的形式返回。
如果没有给定参数,那么 dir()
函数会罗列出当前定义的所有名称。
在 Python 中万物皆对象,int
、str
、float
、list
、tuple
等内置数据类型其实也是类,也可以用 dir(int)
查看 int
包含的所有方法。也可以使用 help(int)
查看 int
类的帮助信息。
包是一种管理 Python 模块命名空间的形式,采用”点模块名称”。
比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用点模块名称这种形式也不用担心不同库之间的模块重名的情况。
在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。
目录只有包含一个叫做 __init__.py
的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。
最简单的情况,放一个空的 __init__.py
文件就可以了。当然这个文件中也可以包含一些初始化代码或者为 __all__
变量赋值。
iter()
和 next()
。迭代器可以被 for 循环进行遍历:
li = [1, 2, 3]
it = iter(li)
for val in it:
print(val)
迭代器也可以用 next() 函数访问下一个元素值:
import sys
li = [1,2,3,4]
it = iter(li)
while True:
try:
print (next(it))
except StopIteration:
sys.exit()
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print(next(f))
except StopIteration:
sys.exit()
原文:https://www.cnblogs.com/pythonsql/p/14605868.html