python学习笔记-基础语法

  • Python filename.py,在执行.py文件之前,需要把当前目录切换文件所在目录
  • 使用python命令切换到交互模式
  • 使用./filename.py直接执行py文件需要在.py文件的首行加上#/usr/bin/env python 3   # -*-  codingutf-8 -*-
  • print()函数用于输出,print(‘hello’);默认是换行输出的,想要实现不换行输出需要在变量末尾加上’,’ python3要求带括号
  • input()函数用于输入,函数中可以添加提示,个人测试使用raw_input();更合适。
  • 注释符号#
    • 相邻的两句的缩进需要统一使用tab或统一使用空格,不能混用。
    • pythonstrings tuples numbers是不可更改的对象,而list dict则是可以修改的对象
  • 同一行多条语句的时候使用;隔开
  • 多行内容使用\n换行符或者使用(··· ···)反引号
  • 除法分///地板除两种,地板除得到的是整数
  • 字符编码:utf-8 汉子三个字节
  • \u开头的字符串是unicode编码,转换为中文汉字使用str.decode(‘unicode_escap’)
  • ord(char)获取自负对应的整数,chr(int)获取整数对应的字符
  • 将字符串保存到磁盘上时需要将类型转换成字节流类型bytesbytes类型数据使用’b’做前缀x=b’abc’使用的是str.encode(),bytes.decode()。包含不能被解码的字节,decode就会报错。
  • lenstr)函数查看字符串包含多少字符
  • 格式化占位符%d整数 %f浮点数 %s字符串 %x十六进制整数 %来转义%
  • 条件循环等语句都是以关键字开始以:结束该行之后的一行或多行构成代码组,不支持switch
  • 允许同时为多个变量赋值a=b=c=1
  • del用来删除单个或多个对象的引用
  • +字符串连接,*重复操作,操作*n重复n
  • 数据类型:数字、字符串、列表、元组、字典
  • 列表用[]标识,列表切割也用[头下标:尾下标],包含头下标对应的值不包含尾下标对应的值,使用list.append[‘’]为列表项追加元素,使用del()删除列表元素del list[index],删除指定位置元素
    • cmp(l1,l2)比较两个列表的元素
    • len(list)列表元素个数
    • Maxlist)列表元素最大值
    • min()
    • list(元组)将元组转换为列表
    • Lname.append(obj) lname.count(obj) lname.extend(seq) lname.index(obj) lname.pop() 
    • lname.remove()移除列表中某个值的第一个匹配项
    • lname.reverse() lname.sort() lname.insert(index,obj)


  • 元组用()标识,元组不能二次赋值,相当于只读列表
    • 注意元组中只包含一个元素时,需要在元素后面添加逗号
    • 元组中的元素是不能修改的,但是我们可以对元组进行组合
    • 元组的元素值是不允许删除的,但是我们可以使用del语句删除整个元组
    • 元组中的方法cmp(元组1,元组2)len(元组)计算元组个数,max(元组)min(元组),tuple(列表)将列表转换为元组
  • 字典用{}标识,类似js中的对象
    • Dict(a=‘’,b=‘’),通过方法创建字典
    • 访问字典 dict[‘索引值’]
    • 删除字典元素 del dict[‘索引值’]
    • 清空字典所有条目 del dict
    • 注意不允许一个键出现两次,键值必须不可变,所以可以用数字,,字符串或元组充当,但是不能使用列表
    • cmp() len() 
    • type(var)返回输入变量的类型
    • str(字典名) 输出字典可打印的字符串表示
    • Dict.clear() 清空字典
    • Dict.copy()浅拷贝,复制,注意直接赋值和copy的区别,直接赋值是引用对象(修改原对象,赋值的对像值也会相应地改变),使用函数是深拷贝父对象(修改原对象,不会改变父对象的值),子对象还是引用(与直接赋值效果一样),深拷贝是完全复制,原对象和复制的对象相互独立,浅拷贝是引用。
    • Dict.deepcopy()深度拷贝
    • Dict.fromkeys(swq[,val]),创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    • Dict.get(key,default=None)返回指定键的值,如果值不存在(访问的key不存在)则返回default的值
    • Dict.has_key(key)判断字典中是否含有某个键,有返回true,没有返回false
    • Dict.items()以列表返回可遍历的(键,值)元组数组[(),()]
    • dict.keys()以列表返回一个字典的所有的键[‘’,’’]
    • Dict.setdefault(key,default=None)如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
    • Dict.update(dict2),dict2的键值对添加到dict
    • Dict.values(),以列表返回字典中的所有值
    • Dict.pop(key[,default])删除字典给定键所对应的值,返回值为被删除的值,key值必须给出,否则返回default的值
    • Dict.popitem()随机返回并删除字典中的一对键和值返回形式元组(’key’’value’


  • 算术运算符,基本一致,注意a**b是指ab次方。//是地板除
    • 注意python不支持++运算
  • 比较运算符<>和!=都表示不等于
  • 赋值运算符**=//=
  • 位运算符& | ^ !~ >>  <<
  • 逻辑运算符用关键字 and or not
  • 成员运算符 in 类似php中的asforeach),not in
  • is is not判断两个标识符是不是引用自一个对象
  • id()函数用来获取对象的内存地址
  • 无限循环while var==1:   while elsewhile条件为false时执行else
  • pass语句时空语句,用作占位语句
  • 数字:整型,长整型、浮点数、复数
  • 数学运算的函数都在math模块和 cmath模块使用时需要引入 import math
  • 随机数函数需要引入随机模块import random 
    • random.choice(seq)从序列元素中随机挑一个元素
    • random.randrange([start,]stop[,step])从指定范围获取一个随机数,比较有意思的是python竟然在参数取值上不遵循最右原则
    • Random.random()随机生成一个01之间的实数
    • random.seed([x])
    • Random.shuffle(lst)将序列的所有元素随机排序
    • Random.uniform(x,y)随机生成一个实数在【xy】之间
  • 三角函数需要引入数学函数import math
  • 数学常量 pi表示pai e表示自然常数
  • 三引号类似php中的定界符
  • Python 日期和时间


  • 提供了很多处理时间和日期的函数,在使用之前需要引入模块import time
  • 时间元组 九组数字组成 分别表示年 一周的第几日 一年的第几日 夏令时 


  • 获取当前的时间戳使用time.time()
  • 获取当前时间time.localtime()返回的是时间元组
  • 格式化时间 time.asctime(time.localtime()) Thu Apr 7 10:05:21 2016 格式
  • 格式化日期 time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime)
  • 将格式化字符串转换为时间戳time.mktime(time.strptime(str,”format字符串对应的时间戳个格式”))
  • time.ctime([secs])作用相当于asctime(localtime([secs]))
  • Time.gmtime([secs])接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
  • Time.mktime(时间元组),接受时间元组并返回时间戳
  • time.sleep(secs)推迟调用线程的运行,secs指秒数
  • Time.strftime(fmt[,时间元组])
  • time.timezong属性,返回当地时区
  • time.tzname属性
  • Calendar模块
  • 用来处理年历和月历
  • import calendar使用前引入
  • Calendar.month(20185)返回2018年五月的日历
  • calendar.firstweekday( ),返回每周起始日期的设置,默认情况下首次在如模块返回0,即周一
  • Calendar.isleap(year)瑞年返回true,否则返回false
  • Calendar.leapdays(y1,y2)返回在y1 y2之间的瑞年总数
  • Calendar.month(year,month,w=2,l=1)返回yearmonth月的日历
  • Calendar.monthcalendar(year,month)返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Yearmonth月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始
  • Calendar.monthrange(year,month)返回两个整数,第一个是该月的日期码就是一号星期几,第二个整数代表这个月有多少天
  • Calendar.prcal(year,w=2,l=1,c=6)相当于print calendar.calendar(year,w,l,c)输出整年的日历
  • Calendar.promonth(year,month,w=2,l=1)相当于print calendar.month(year,month,w,l)
  • Calendar.setfirstweekdayu(weekday)设置每周的起始日期码
  • calendar.timegm(时间元组)接受一个时间元组返回一个时间戳
  • Calendar.weekday(year,month,day)返回给定日期的日期码,周几对应的码(编号0-6

函数

  • 函数代码块以def关键字开头,后接函数标识符名称和圆括号()。
  • 任何传入参数和自身变量必须放在圆括号中间。圆括号之间可以用于定义参数
  • 函数的第一行语句可以选择性地使用文档字符串用于存放函数说明
  • 函数内容以冒号起始,并且缩进
  • return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于None
  • python函数的参数传递
    • 不可变类型 作为参数传递过去时 传递的只是值,不会影响a对象本身
    • 可变类型 字典,列表 则是真正传过去,修改后fun外部也会受影响
    • python中一切皆对象,参数分为不可变对象和可变对象
    • 关键字参数,在调用函数时使用了定义函数时使用的参数作为关键字,此时传入参数的顺序不重要 







扫描二维码关注公众号,回复: 135080 查看本文章












    • 缺省参数是指在定义函数时设置了默认值例如
      • def printinfo(name,age=35):
    • 不定长参数def functionname([flags,] *var_args_tuple):
      • *变量名会存放所有未命名的变量参数
  • 匿名函数
    • python使用lambda来创建匿名函数
    • lambda的主体只是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑
    • lambda函数拥有自己的命名空间,且不能访问自由参数之外或全局命名空间里的参数
    • 语法 lambda [arg1[,arg2…]]:expression 








模块

  • 模块就是一个python文件
  • 引入模块import 文件名
    • 注意在引入模块时,不需要加后缀.py
    • 可以同时引入多个,中间用逗号隔开
    • 在使用引入模块的函数时,需要加上模块名使用 例如importname.func()
    • 一个模块只会被导入一次,不管执行多少次import。类似phpinclude_once
  • from…import语句
    • 语法from modname import name1,name2…
    • From modname import  *
    • 注意与直接import modname的区别,这种方法引入时不需要加模块名称
      • Modname.func() func()的区别
    • 理解为从一个模块中导入一个或几个函数
    • 搜索路径
      • 当前目录-shell变量下PATHONPATH下的每个目录-》默认路径一般为/usr/local/lib/python/
    • 命名空间
      • 全局变量,局部变量
      • 在函数内使用全局变量的时候需要用关键字global进行声明
  • Dir()函数用来查看查询对象的属性和方法
  • globals()函数和locals()函数
    • 根据使用的地方不同,globals() locals()返回全局或局部命名空间里的名字
    • 如果在函数内部调用locals()返回的是所有能在该函数里访问的命名
    • 如果在函数内部调用globals()返回的是所有能在该函数里能访问的全局名字
    • 两个函数返回的都是字典,所以能用keys()函数摘取
  • reload()函数
    • 当一个模块被导入到一个脚本,模块顶层代码只会被执行一次想要重新执行顶层代码使用本函数
    • 语法:reload(module_name)
  • 包就是一个文件夹但是该文件夹下必须有__init__.py 文件,可以为空,用来标识这是一个包
  • 文件I/O
  • Print() 打印字符
  • raw_input() 从标准输入读取一个字符串
  • Input() raw_input()函数基本一致,但是input函数能够接受表达式
  • 打开和关闭文件
    • open()函数 file object=open(file_name[,access_mode][,buffering]),第二个参数决定打开方式
    • file对象的属性
      • file_object.closed  返回true文件被关闭,否则返回false
      • file_object.mode 返回被打开文件的访问模式
      • File_object.name 返回文件的名称
      • file_object.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true
    • file对象的方法
      • close()方法 关闭文件 语法 file_object.close()        php fclose($handle)
      • file.flush()刷新文件内部缓冲
      • file.fileno()返回一个文件描述符
      • file.isatty()如果文件链接到一个设备终端返回true,否则返回false
      • file.next()返回文件的下一行
      • file.read([size]) 从文件读取制定的字节数,未指定或为负则读取所有
      • file.readline([size])未指定读取整行,指定读取size字节 包含“\n”,
      • file.readlines([sizehint])读取所有行并返回列表,若给定sizeint>0,则是设置一次读取多少字节,这是为了减轻读取压力
      • file.truncate([size])截取文件,截取的字节通过size指定。默认为当前文件位置
      • file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
      • file_object.write(str),该方法可以将任何字符串写入一个打开的文件
        • 注意该方法不会在字符串结尾添加换行符“\n”


    • Read([count])方法 从一个打开的文件中读取一个字符串
      • file_object.read()从打开的文件中读取一个字符串,参数count是读取的字节数,不指定则尽可能的读取更多内容,很可能是读到文件结尾
  • 文件定位 tell() seek(offset[,from])
    • file_object.tell() 返回当前位置
    • file_object.seek(offset[,from]),改变当前位置,offset表示要移动的字节数,from表示开始移动的参考位置,0表示开头作为参考位置,1表示当前位置作为参考值,2表示文件末尾作为参考值
      • 注意:在write内容后直接read文件输出为空,是因为指针已经在文 件末尾
        • 解决方法:关闭文件,重新打开。使用seek函数将指针移到起始位置
  • with 语句的引入
    • 为保证能正确关闭文件且语言更加简洁
      • with open(‘file_name’,’r’) as f
          • Print f.read();
  • 异常处理

 语法:Try

except 【错误类别】【,错误类别2

else

try中出错,except捕捉到错误。没有错误执行else

try-finlly是无论是否出现异常都会执行finlly内容

使用raise 触发异常

raise Exception“some info”);

os模块

  • import os引入模块
  • Os.rename(current_file_name,new_file_name)文件重命名
  • Os.remove(‘filename’)删除文件
  • Os.mkdir(“newdir”)在当前目录下创建新目录
  • Os.chdir(‘newdir’) 改变当前目录
  • Os.getcwd()显示当前的工作目录
  • Os.rmdir(‘dirname’) 删除目录



























猜你喜欢

转载自blog.csdn.net/benben0729/article/details/80221221