加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python基础语法

发布时间:2020-12-17 01:25:41 所属栏目:Python 来源:网络整理
导读:学习python基础语法视屏,与matlab语法相似,相比C、C++语言十分简单:不需要定义变量,不需要定义数据结构,有大量封装好的函数可供调用。 一、前期准备 就python,R语言,SPSS,SAS,matlab几种统计学工具比较来看: SAS与SPSS都是商业软件,前者昂贵,后

学习python基础语法视屏,与matlab语法相似,相比C、C++语言十分简单:不需要定义变量,不需要定义数据结构,有大量封装好的函数可供调用。

一、前期准备

就python,R语言,SPSS,SAS,matlab几种统计学工具比较来看:

SAS与SPSS都是商业软件,前者昂贵,后者全窗口操作没有技术含量(f);

matlab数据处理功能真的是呵呵,界面卡,试着用矩阵处理1000个节点的网络需要八九个小时,优势在于绘图和小规模数据处理;

python与R语言全开源,资源多,灵活,数据处理功能强大,为主要学习目标。

作为脚本语言,python、perl、ruby三者比较:

经典的perl语言,作为python与perl的发源地如今看来有些陈旧,且代码晦涩难懂(f)

ruby与python很相似,哲学意义在于?“There are many ways to do it.”。有人评价国内ruby适合大团队,小团队难维护。ruby是纯粹的面向对象。

Python简单、易学、可读性好,哲学意义在于"There should be one-- and preferably only one --obvious way to do it." python倾向于面向过程和面向对象的糅合。

既然二者相似,选择python入门。

学习一门新语言,我主要留意C的不同之处:1.标识符:是否可包含特殊字符。2.对大小写的支持。3.新增或减少的数据类型。4.输入输出方式。5.是否面向对象。除此之外,算数逻辑运算规则相同;if-else语句,for循环,while循环大同小异;函数定义使用基本一致。

面向对象和面向过程的区别:

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 (步骤划分问题,依次调用函数)

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(功能划分问题,对象调用函数)

二、基础语法知识点

(1)标示符:定义同C语言,以字母或下划线开头,可包括字母,下划线和数字。

注:以下划线开头的标识符是有特殊意义的。

>?以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;

>?以双下划线开头的(__foo)代表类的私有成员;

>?以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。

(2)变量赋值:

>?简单赋值,Variable(变量)=Value(值)。

>?多变量赋值,Variable1,variable2,...=Value1,Value2,...

>?多目标赋值,a=b=variable

>?自变赋值,如+=,-=,*=等。在自变赋值中,python仅计算一次,而普通写法需计算两次;自变赋值会修改原始对象,而不是创建一个新对象。

注:python变量原理同C语言指针,修改变量值只是新指向一个地址,不改变原来地址的值。

(3)大小写:区分大小写

(4)注释:#注释单行; ''' '''注释多行。

(4)数据类型:

注:字符串可用‘’," ",""" """. 如果字符串中含单引号,则需要用双引号,或者将字符串中单引号转义。三引号用户换行。

tuple元组数据用(),list列表数据用[ ].

三个内建函数列表,元组和字符串之间的互相转换使用三个函数,str(),tuple()和list(),具体示例如下所示:

>> s = "xxxxx"
>>> list(s)
['x','x','x']
>>> tuple(s)
('x','x')
>>> tuple(list(s))
('x','x')
>>> list(tuple(s))
['x','x'] 

列表和元组转换为字符串则必须依靠join函数

>> "".join(tuple(s))
'xxxxx'
>>> "".join(list(s))
'xxxxx'
>>> str(tuple(s))
"('x','x')"

(5)输入输出:

str1 = raw_input(' input: ') #输入将全部转化为字符串存储。

type(str1) #测试变量类型

id(str1) #返回变量所在内存地址

f=float(str1) #强制类型转换

print (format(f,'.2%')) #格式化输出m.n%,m是占位,n是精度

printf format(0.3456,'.2%'),f #多项输出用逗号隔开,输出函数括号可省略

注:指定输出的占位若大于有效位数,则右对齐。若小于有效位数,则忽略占位照常显示。

%r是一个万能的格式付,它会将后面给的参数原样打印出来,带有类型信息。

print formatter % (1,2,3,4)
print formatter % ("one","two","three","four")
print formatter % (True,False,True)
print formatter % (formatter,formatter,formatter)
print formatter % (
"I had this thing.","That you could type up right.","But it didn't sing.","So I said goodnight."
)
输出结果:
<code class="language-python">$ python ex8.py
1 2 3 4
'one' 'two' 'three' 'four'
True False False True
'%r %r %r %r' '%r %r %r %r' '%r %r %r %r' '%r %r %r %r'
'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight.'
$

(6)函数

函数类型:内部函数,第三方提供函数,自定义函数

内部函数四种类型函数库:字符函数库(无需导入),数学函数库(import math),os函数库(import os),网络函数库(import socket)...

第三方提供函数需安装导入

自定义函数:

def testfunc(a,b,c):

(tab) content

函数返回值,可返回整数、数字、元祖。函数可以作为参数,字典或列表中的元素使用。

实参赋值:可一一对应赋值 ?testfunc(1,3);指定形参一一赋值?testfunc(b=2,a=1,c=3);有预定义值的参数不能先于无预定义值的参数,且可被修改预定义值。

(7) if-elif-else,while-else,for-in

for-in打印输出遗漏部分内容问题:

输入实例:你 / 究竟 / 在 / 哪儿 / ?

正确输出:究竟,哪儿

实际输出:null

原因:for-in执行过程中,列表长度在变化,导致删除一个元素后后面的元素补上,下次查询时则直接跳过了该元素。
解决:建立新列表存储数据。

8. 反斜杠

反斜杠有两个用途:文件盘符组成部分,长代码行连接(将两行代码连接为一行)

windows在路径名中可以接受斜线/也可以接受反斜线,然而如果用反斜线表示C:test.py,那么t 就可能被大因为制表符输出,因此盘符建议用斜杠

避免反斜杠转义的方法还有:

采用r输入原始盘符r'C:test.py';

双引号"C:test.py";

双斜杠转义‘C:test.py’;

斜杠表示盘符’?C:/test.py‘

同一目录文件省略路径名:

如果把文件test.py和hello.py存储在C:/hellopython,打开test.py之后,打开同一目录下的hello.py文件只需要如下表示:

hello = fd.open("hello.py","r")

9.列表操作

python中,数字和字符串不可原地改变(所谓改变只是移动标签),列表是可以原地改变的[ ],元祖是不可改变的列表()——不可排序、增加、删除

要使用列表就要先创建mylist=[]

增加列表元素append():mylist.append('zhao')

扩展列表extend():mylist.extend(['a','b','c'])

插入元素insert():mylist.insert(2,'d')

删除元素remove():mylist.remove('b')

del():del?mylist[2]

pop():ch=mylist.pop()#取出最后一个元素给你

搜索列表for:for a in mylist:

查找索引index():mylist.index(d)

列表原地排序sort():mylist.sort() #数字按从小到大,字母从a到z。注:sort()是在原地修改列表,因此调用sort时不能同时print输出

列表有序副本sorted():mylist.sorted()

逆序排列reverse():mylist.reverse()

为原列表建立副本sorted():newlist = oldlist [:]#采用列表切片

append()和extend()的区别:

append()加入一个元素:mylist.append(['d','e','f'])#['zhao','a','c',['d','f'] ]

extend()加入一组元素:mylist.extend(['d','f']) #['zhao','a','d','f'?]

10.字典——将两样元素关联在一起

列表是有序的;字典是无序的

列表使用索引访问;字典使用条目访问

创建空字典:phoneNumber = { }

添加条目:phoneNumber = {’john‘,'5322' }

phoneNumber[’john‘]?='5322'

del删除条目:del?phoneNumber[’john‘]?

clear()清空字典:phoneNumber.clear()

in检查某个键是否存在

keys()列出所有键;values()列出所有值——都是以列表形式列出。

>> dict = { 1 : 2,'a' : 'b','hello' : 'world' }
>>> dict.values()
['b','world']
>>> dict.keys()
['a',1,'hello']
>>> dict.items()
[('a','b'),(1,2),('hello','world')]
>>> 

11.(更新中...)

Ctrl+F6:重新启动restart

del 变量名:手动释放变量占用的内存

fd.flush() 将缓冲区内容写入文件

12. 运行.py文件

import os

os.system( 'C:Python34python.exe ?c:Python34datastart.py')#调用命令行的方式

execfile(r"c:Python34datastart.py")

注意:

eval(str [,globals [,locals ]])函数将字符串str当成有效Python表达式来求值,并返回计算结果。

exec语句将字符串str当成有效Python代码来执行.提供给exec的代码的名称空间和exec语句的名称空间相同.

execfile(filename [,locals ]])函数可以用来执行一个文件

--------------------------其他----------------------------

13.?在python中sys.argv[1:]是什么?

python test.py --t help --v

那么sys.argv就是['test.py','--t','help','--v']

那么sys.argv[1:]就是['--t','--v']

14.查看python是32bit还是64bit

如何查看python是32位还是64位:参见 :http://blog.csdn.net/waleking/article/details/7566842?

import struct

struct.calcsize("P")

如果是4,说明是32位的;如果是其他的是,64位的。struct.calcsize用于计算格式字符串所对应的结果长度。


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读