首页 > 编程 > Python > 正文

Python入门小菜笔记

2019-11-08 02:22:59
字体:
来源:转载
供稿:网友

标签: Python


安装与运行

Ubuntu下跑的,貌似装了一些软件以后已经有装好的Python了,直接在控制台上输入python2或者python3进入相应的版本,第一行即给出了具体的版本号,最新的是Python 2.7.12Python 3.5.2,目前2具有更好的兼容性。

python写的程序为*.py,终端进入对应文件夹下python2 *.py即可运行。

另外又装了一款多平台IDE, Pycharm,在Windows里跑很方便。


标识符

以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用”from xxx import *”而导入;以双下划线开头的__foo代表类的私有成员;以双下划线开头和结尾的__foo__代表python里特殊方法专用的标识,如__init__()代表类的构造函数。


基本语法

和C相比而言,有几处不同:

冒号表示段落的开始。用缩进代替花括号,但必须严格缩进一样数量的空格。建议你在每个缩进层次使用 单个制表符两个空格四个空格 , 切记不能混用。错误提示IndentationError: unindent does not match any outer indentation level

使用斜杠( /)将一行的语句分为多行显示,而[], {}() 括号就不需要。

注释符 # 或者 三引号

在同一行中使用多条语句,语句之间使用分号(;)分割,行末可以不加。


输入输出

x=input()x=input("Please input a digit")PRint xprint 'abc'print 3

在IDE中要支持中文,必须在设置中改变编码类型为UTF-8,并在行首加

# coding=utf-8

如果还是报错,注意这句话等号两边都不要加空格!

input:会根据用户的输入来做类型的转换 raw_input:则会把用户的输入都作为一个字符串来处理(所见即所得)

def input(prompt): return eval(raw_input(prompt))# eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象 # 两次都输入3+5x = input("x:") print x # 输出8y = raw_input("y:")print y # 输出3+5

输出类似于C中sprintf的写法

print "My name is %s and weight is %d kg!" % ('Zara', 21)

解决py2会自动输出回车的方法

from __future__ import print_function # 用py3的print的写法print(x, end="") # 表示结束符不用回车

也可以对整个文件做处理,新建文件、写入内容、删除文件。系统指令很多,要用时查表。

fo = open("a.cpp", "wb") # 打开/新建文件fo.write("a=10/nprint a") # 写入内容fo.write(r''' #include <bits/stdc++.h>int main(){ int x, y; while(~scanf("%d%d", &x, &y)) printf("%d + %d = %d/n", x, y, x+y); return 0;}''') # r可以避免转义字符生效fo.close() # 关闭文件import os # 载入os库os.remove("a.cpp") # 移除文件

内置对象

简单类型:int long float complex bool 容器类型:string list tuple

变量赋值不需要类型声明。

可以为多个对象指定多个变量。例如下面两句话等价,前面的赋值更加简洁。

a, b, c = 1, 2, "john"a = 1; b = 2; c = "John"

要调用一些数学变量和常用函数,先载入头文件再调用

import mathmath.pimath.sin(x)help(math)help(math.acos)

可以进行复数运算

x=2+3j 或 complex(2, 3)y=4+7jx/y

string使用方便 Python 接收单引号( ' )、双引号( " )、三引号( '''""") 来表示字符串,引号的开始与结束必须的相同类型的。 其中三引号可以引用多行。 +表示连接,*表示重复。

a = "python"print a[2:5]*2+a[0]+a[2:]

列表[]等价于C语言里的数组 +表示连接,*表示重复。

list = [4,5,'pp']len(list) # 读取容量大小list.append(x) # 塞入x

元组()类似于列表,但只读,不能二次赋值,系统会报错

tuple = (4,5,'pp')ct = list(tuple) # 元组转换到列表,可进行二次赋值tt = tuple(ct) # 反之,将列表转换到元组

元字典{}等价于C++里的map

dict = {}dict['one'] = "This is one" # dict[key] = valuedict[2] = "This is two"tinydict = {'name': 'john','code':6734, 'dept': 'sales'} # dict = {key : value}print dict['one'] # 输出键为'one' 的值print dict[2] # 输出键为 2 的值print tinydict # 输出完整的字典print tinydict.keys() # 输出所有键print tinydict.values() # 输出所有值

删除对象

del a

运算符

和C差不多的就不赘述了,记一些不一样的 // 等价于对除法结果取floor() ** 等价于pow() ~ 求补运算 <>!=

逻辑运算符用单词直接给 and or not

一些测试运算符,非常接近正常语言 in not in 成员是否属于某一类 is is not 对象实体一致性


循环语句

设置了while...else...以及for...else... 正常循环时,执行while或者for后会执行else,但如果中途跳出,则不能执行else

for循环迭代体有多种设置方式

x = [**, **, **]for y in x: **** # y作为迭代对象 for index in range(len(x)): **** # index为数组下标,range返回一个序列数组

时间函数

import timetime.time() # 自从1970年1月1日0点经过了多少秒time.localtime() # 化到struct_time元组time.asctime() # 能友好显示当地时间print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 2017-02-15 15:09:42

函数

定义函数后调用,其中参数都是直接引用的,和C不同。

def 函数名(参数x, y, z, *var): “一些说明” 函数体 return ***

调用函数时可以选择一一对应传入参数;也可以打乱顺序指定变量名,此时也可省略一些参数。其中*表示参数数量不确定,传入多个以后会保存在元组var里。

函数名(xx, yy, zz)函数名(y=yy, x=xx, z=zz)

lambda函数 lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

sum = lambda arg1, arg2: arg1 + arg2;

模块

在同一目录下生成新文件xxx.py,在其他python文件下调用函数只需

import xxxxxx.function()dir(xxx) # 查看xxx.py里的函数

想在模块里使用全局变量,则先声明后再使用

global var

异常

异常类型系统已有定义。也可以用户自定义。为了保证代码出错时不会立刻停止,

try: # 一段试着被执行的代码 fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!")except IOError:# 当try里的内容出现错误,则在下面的except里找对应错误 print "Error: 没有找到文件或读取文件失败"else:# 不出现错误则执行 print "内容写入文件成功" fh.close()

其他功能

可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表