Python基础:Day 1

  • A+
所属分类:Python笔记

1、环境搭建

目前电脑已安装JetBrains PyCharm,Python版本3.7,暂使用Pycharm编辑器,Anaconda后期研究。

Python解释器:将代码翻译成机构可以执行的二进制机器码(字节码ByteCode),并运行这些二进行制码。Python解释器主要特点:边解释边执行(运行速度相对慢)

扩展知识:常见字符编码的区别

ASCII码:美国标准信息交换代码,规定最多只能用8位表示一个字节,即2**8=256-1,最多只能表示255个字符,不支持中文;

Unicode:万国码,规定所有的字符和符号最少由16位表示(最少2个字节,可能更多),即2**16=65536,支持中文;

UTF-8:可变长度字符编码,将所有的字符和符号进行分类,ASCII码中的内容用1个字节保存,欧洲的字符用2个字节保存,东亚的字符(如中文)用3个字节保存,从而节约存储空间。

python 2.7版本默认字符编码为ASCII码,故如果程序中包含中文,需在程序头部声明字符编码,指定方式:

  1. # -*- coding: utf-8 -*-

 

2、Python初体验

print函数:向屏幕上输出指定的字符串或数字

  1. print("Holle Python!")

屏幕显示输出结果:Holle Python!

input函数:接受一个标准输入数据,返回回值始终是字符串(string )

  1. input("请输入用户名:")

屏幕显示输出结果:光标停留在"请输入用户名"冒号后面,等待用户输入信息。

 

3、Python基础讲解

a. python变量名特性及命名规则

变量名特性:

用前先赋值,但python的变量不存储在内存中,更像贴在值的边上;

例:

  1. name = "Roy"
  2. name2 = name        #name赋值Roy,name2赋值仅指向Roy,而非等于name
  3. print("My name is",name,name2)
  4. name = "Amy"       #name重新赋值为Amy,name2赋值原来指向Roy,所以输出没有变化
  5. print("My name is",name,name2)

输出结果:

  1. My name is Roy Roy
  2. My name is Amy Roy

命名规则:

1. 变量名可以包括字母、数字、下划线、但不能以数字开头;

2. 字母可以是大写或小写,但python区分大小定,大小写不同时表示不同变量名,如变量名“name”和“Name”是不同的变量名;

3. "="等号是赋值的意思,左边为变量名,右边为值;

4. 变量名可以取任何合法名字,但尽量专业,不要使用中文。

b.注释方法:

单行注释:# 注释内容;

多行注释:"""注释内容"""'''注释内容'''

c.python中“:”的作用:

冒号来区分代码之间的层次

:出现在函数定义语句末尾、if for while语句末尾,表示下面的代码块应当缩进;

:出现在字典定义当中用于分开键和值。

d.学会使用dir()及help():

dir() 用于列出对象的所有属性及方法;

1. 如果 dir() 没有参数,则返回当前作用域中的名称列表;否则,返回给定 object 的一个已排序的属性名称列表。

2. 如果对象提供了 __dir__() 方法,则它将会被使用;否则,使用默认的 dir() 逻辑,并返回。

例:

  1. >>> import os       #导入内置模块os
  2. >>> dir(os)             #获得os模块内置函数、异常和其他对象的列表
结果

['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

help() 函数用于查看函数或模块用途的详细说明;

例:help([object])

  1. >>> help(dir)
结果

Help on built-in function dir in module builtins:

dir(...)
dir([object]) -> list of strings

If called without an argument, return the names in the current scope.
Else, return an alphabetized list of names comprising (some of) the attributes
of the given object, and of attributes reachable from it.
If the object supplies a method named __dir__, it will be used; otherwise
the default dir() logic is used and returns:
for a module object: the module's attributes.
for a class object: its attributes, and recursively the attributes
of its bases.
for any other object: its attributes, its class's attributes, and
recursively the attributes of its class's base classes.

查看方法的帮助信息:hepl(模块名.方法名)

e. import使用

import函数用于导入模块或文件;

可导入的文件类型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。

f. pep8介绍

python代码书写规范注意点:

缩进:

用4个空格来缩进代码,不要用tab, 也不要tab和空格混用;

行最大字符长度:

  • 所有行限制最大字符数为79;
  • 文档字符或注释每行字符数限制在72;

空行:

  • 顶层函数和类的定义,前后用两个空行隔开。
  • 类里的方法定义用一个空行隔开。

imports 导入:

  • 导入不同对象时分行;
  • 导入总是位于文件的顶部,在模块注释和文档字符串之后,在模块的全局变量与常量之前。
  • 推荐使用绝对路径导入,如果导入系统没有正确的配置(比如包里的一个目录在sys.path里的路径后),使用绝对路径会更加可读并且性能更好(至少能提供更好的错误信息):
  •  导入应该按照以下顺序分组:
    1. 标准库导入
    2. 相关第三方库导入
    3. 本地应用/库特定导入
    4. 你应该在每一组导入之间加入空行。
  • Comments 注释:
  • 与代码相矛盾的注释比没有注释还糟,当代码更改时,优先更新对应的注释
  • 注释应该是完整的句子。如果一个注释是一个短语或句子,它的第一个单词应该大写,除非它是以小写字母开头的标识符(永远不要改变标识符的大小写!)
  • 如果注释很短,结尾的句号可以省略。块注释一般由完整句子的一个或多个段落组成,并且每句话结束有个句号。
  • 在句尾结束的时候应该使用两个空格。
    当用英文书写时,遵循Strunk and White (译注:《Strunk and White, The Elements of Style》)的书写风格。
  • 在非英语国家的Python程序员,请使用英文写注释,除非你120%的确信你的代码不会被使用其他语言的人阅读。

命名约定:

Names to Avoid 应避免的名字

  • 永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)作为单字符变量名。
  • 在有些字体里,这些字符无法和数字0和1区分,如果想用‘l’,用‘L’代替。

Class Names 类名

  • 类名一般使用首字母大写的约定。
  • 在接口被文档化并且主要被用于调用的情况下,可以使用函数的命名风格代替。
  • 注意,对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。

Function Names 函数名

  • 函数名应该小写,如果想提高可读性可以用下划线分隔。
  • 大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用(比如 threading.py),保持向后兼容性。

Function and method arguments 函数和方法参数

  • 始终要将 self 作为实例方法的的第一个参数。
  • 始终要将 cls 作为类静态方法的第一个参数。
  • 如果函数的参数名和已有的关键词冲突,在最后加单一下划线比缩写或随意拼写更好。因此 class_ 比 clss 更好。(也许最好用同义词来避免这种冲突)

4、 python中数值基本知识

a. 数值类型:

数值类型 名称 描述
int() 整型 无小数点的整数
float 浮点型 带小数的数值
bool 布尔型 非真即假,特殊的整型,true为1,false为0

e记法:表示乘以10的几次幂

3e5:表示3乘以10的5次幂,也就是3*10*10*10*10*10,结果等于300000

不要把自乘得到幂(也称为求幂)和E记法弄混了

3**5:表示3的5次幂,也就是3*3*3*3*3,等于243

b. 算数运算符

运算符 描述
+ 加 - 两个对象相加
- 减 - 得到负数或是一个数减去另一个数
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串
/ 除 - x除以y
% 取模 - 返回除法的余数
** 幂 - 返回x的y次幂
// 取整除 - 返回商的整数部分(向下取整)

c. 逻辑运算符

运算符 逻辑表达式 描述
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

d. 成员运算符

in: 如果在指定的序列中找到值返回 True,否则返回 False,例:

x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in :如果在指定的序列中没有找到值返回 True,否则返回 False,例:

x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

e. 身份运算符

is: is 是判断两个标识符是不是引用自一个对象,例:

x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False。

is not:is not 是判断两个标识符是不是引用自不同对象,例:

x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

f. 运算符优先级

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is      is not 身份运算符
in      not in 成员运算符
not     and     or 逻辑运算符

 

  • 参考文章:
    https://www.jianshu.com/p/ffcc66bab3ce
    http://www.runoob.com/python3/python3-tutorial.html

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: