编程初入门

Python基础篇之语法

2019-10-22  本文已影响0人  山水墨阳

语言特性
高级编程语言一般有两大家族,一是编译性语言,一是解释性语言。编译性语言诸如C,C++,Java等,需要编译成特殊的可执行文件,在指定的环境中执行,如Java编译后是.class文件,需要在Java虚拟机(JVM)中执行。解释性语言也叫脚本语言,能直接在指定环境(解释器)执行的语言。Python属于解释性语言,只要有Python解释器的环境兼可执行。

注释

Python的注释支持单行注释,多行注释。单行注释一般用井号(#)开头,多行注释用三单引号(''' 注释内容 ''')或三双引号("""注释内容""")。好的注释能增加代码的可读性和可维护性,注释尽量标准和正规。个人习惯一般在文件的头部要有该文件的功能描述型注释,推介再加入作者及日期等,根据自己的情况进行注释。

#! /usr/bin/python3
# -*- coding: utf-8 -*-
'''
这里是注释,可以说明这个脚本的功能描述
功能:这是一个测试文件
作者:Darker
日期:2019年10月22日
'''
print("Hello Python")
print(str(__name__))
"""
Python文件既可以独立运行,也可以当做模块导入到其他文件。
当导入到其他的脚本文件的时候,此时__name__的名字其实是导入模块的名字,不是’__main__’,
main代码里面的就不执行了。
"""
if __name__ == '__main__':
    print("Main 执行了")
    pass

第一行是“#! /usr/bin/python3”,这是是用来说明脚本语言是python,要用/usr/bin下面的程序(工具)python3这个解释器,来解释运行python脚本的,如果环境变量中指定了Python解析器,该行代码可以不用。

字符集

Python基本支持所有字符集,字符集在代码首行或第二行约定,形式如下:

# -*- coding: utf-8 -*-

代码块

Python与其他编程语言最直接的分别在于Python的代码块(或叫代码组)是按缩进区分,相同的代码块有相同的缩进进度。其他的编程语言如C,Java是通过大括号({})进行块区分。如下代码:

# -*- coding: utf-8 -*-
'''
这里是注释,可以说明这个脚本的功能描述
功能:这是一个测试文件
作者:Darker
日期:2019年10月22日
'''
def add(a,b):
    return a+b
def doublestr(s,t):
    print(str(s) * t)
"""
Python文件既可以独立运行,也可以当做模块导入到其他文件。
当导入到其他的脚本文件的时候,此时__name__的名字其实是导入模块的名字,不是’__main__’,
main代码里面的就不执行了。
"""
if __name__ == '__main__':
    print("Main 执行了")
    add(1,2)
    doublestr('godbirds\n',2)
    pass

上面代码块内定义了两个函数,在main方法中调用了,因为Python执行是逐行从上往下执行,所以在main方法内部调用的方法或对象必须是已声明的,否则会报出:NameError: name 'XXX' is not defined的错误。把doublestr方法定义在main的后面则会出现这种情况。

标识符

标识符是由字母、下划线开头的由字母、数字、下划线组成的区分大小写的字符串。与Java一样,字符串命名尽量见文识意。

关键字

关键字是语言内部设定的具有一定意义的关键词汇,不可用于命名为标识符或函数名等。可用代码查看系统内部的关键字信息:

# -*- coding: utf-8 -*-
import keyword
print("关键字为:")
print(keyword.kwlist)

输出为:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

数据类型

数据类型包括:Number 数字,String 字符串,List 列表,Set 集合、Tuple 元组,Dictionary 字典。数字、字符串、元祖定义后不可修改。列表、集合、字典可根据下标或者键进行读取和修改。

type(1) # 输出<class 'int'>
type(1.2) # 输出<class 'float'>
type(True) # 输出<class 'bool'>
type(False) # 输出<class 'bool'>
type(1+1j) # 输出<class 'complex'>
type(bool(0)) # 输出<class 'bool'>
print(bool(1)) # 输出True
type([1,2,'str',True]) # 输出<class 'list'>
type({12,3,'str'}) # 输出 <class 'set'>
type((1,2,3,'str',True)) # 输出 <class 'tuple'>
type({'name':'wping','age':18,1:2019}) # 输出<class 'dict'>
# 1、证明 True = 1
print(True == 1) # 输出 True
print(True == 0) # 输出 False
print(True == 2) # 输出 False
# 2、证明 False = 0
print(False == 0) # 输出 True
print(False == -1) # 输出 False
# 3、证明非0即True
bool(1) # 输出 True
bool(2) # 输出 True
bool(100.2) # 输出 True
bool(0) # 输出 False
bool(-1) # 输出 True
a = 'str' # 单引号创建
b = "str" # 双引号创建
c = str('str') # 函数创建
print(type(a)) # 输出 <class 'str'>
print(type(b)) # 输出 <class 'str'>
print(type(c)) # 输出 <class 'str'>
print(a == b) # 输出 True
print(a == b == c) 输出 True
a = [1,'a',"A",'A'] # 中括号创建
b = list((1,'a',"A",'A')) # 函数创建
print(type(a)) # 打印a的类型,输出 <class 'list'>
print(type(b)) # 打印b的类型,输出 <class 'list'>
c = a+b # 两个数组直接相加 或者 list(set(a).union(set(b)))
print(c) # 打印相加后的值,输出 [1, 'a', 'A', 'A', 1, 'a', 'A', 'A']
d = a-b # 不支持两个结合相减
'''
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'list' and 'list'
'''
a = {'a',1,True,None} # 中括号创建集合
b = {'b',2,False,None} # 中括号创建集合
s = set(('b',2,False,None)) # 函数创建集合
print(type(a)) # 打印a的类型,输出<class 'set'>
print(type(b)) # 打印b的类型,输出<class 'set'>
print(type(a)==type(b)) # 输出 True
c = a+b # 不支持集合直接相加
"""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'
"""
c = set(a).union(set(b)) # 集合求并集
print(c) # 输出 {False, 1, 'b', 2, 'a', None}
print(type(c)) # 输出<class 'set'>
d = list(set(a).union(set(b))) # 集合求并集转为列表
print(d) # 输出 [False, 1, 'b', 2, 'a', None]
e = set(a).intersection(set(b)) # 集合求交集
print(e) # 输出 {None}
f = set(a).difference(set(b)) # 集合求差集
print(f) # 输出 {1, 'a'}
print(type(f)) # 差集类型输出<class 'set'>
g = list(set(a).difference(set(b))) # 集合求差集转为列表
print(g) # 输出[1, 'a']
print(type(g)) # 输出差集类型<class 'list'>
a = ('a',1,True) # 括号创建元组
b = tuple(('a',1,False)) # 函数创建元组
print(type(a)) # 打印元组类型,输出<class 'tuple'>
print(type(a) == type(b)) # 打印元组类型是否相等,输出True
c = ('a') # 定义单一字符串元组
print(type(c)) #打印元组类型,输出<class 'str'> 故字符串是特殊的元组
print(a[0]) # 根据下标获取元组,输出 a
d = a[1] # 获取元组值赋值给d
print(d) # 打印元组,输出1
a[1] = 2 # 修改元组内部值,错误,故元组内部值不可变
''' 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
'''
a = {'a':1,'x':True} # 中括号创建
b = dict({'b':c,'x':False}) # 函数创建

如下展示了元组不可变和存储可变数据类型案例
备注:>>>后代表Shell命令行,无符号行表是输出结果,后面不再做解释

>>> t = tuple((1,2,'str',[1,2,3],{'a',1,2,3}))
>>> print(t)
(1, 2, 'str', [1, 2, 3], {1, 2, 3, 'a'})
>>> t1 = t[0]
>>> print(t1)
1
>>> t2 = t[3]
>>> print(t2)
[1, 2, 3]
>>> t2[1] = 'change'
>>> print(t2)
[1, 'change', 3]
>>> print(t)
(1, 2, 'str', [1, 'change', 3], {1, 2, 3, 'a'})
>>> t[2] = 'str_chg'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

模块导入

导入某个模块的脚本,与Java import 类似。导入后可在该文件中调用导入的模块内部的类和函数,语法如下:

#导入整个模块A
import A
#导入整个模块A的所有函数
from A import *
#导入模块A的a函数,别名为a
import A.a as a
#导入模块A的 a、b、c函数
from A import a,b,c

输入输出

输入:input("请您录入") 执行函数后等待输入设备输入信息
输出:print("打印的内容") 打印出相应的内容


返回Python修炼册大纲

至此入门基础语法介绍完毕,还有一些不太常用的语法会在后面涉及到的时候提及。后面会再深入基础篇,对数据类型,逻辑运算,流程控制以及异常捕获等进行学习和探讨。

上一篇 下一篇

猜你喜欢

热点阅读