Python语法基础

这篇博客介绍了Python的基础语法,包括输出和输入语句、变量及其命名规范、数据类型、虚拟环境的使用,以及数字、字符串、列表、元组和字典等核心概念。强调了变量的赋值顺序和数据类型的不可变性。
摘要由CSDN通过智能技术生成

python语法基础

  • python完全靠缩进表达代码逻辑
  • 注释采用#。pycharm的快捷键是ctrl+/
  • 续行使用\
  • 同行多个语句采用;分隔,但是不推荐,因为可读性下降

输出语句

>>> print('Hello World!')
Hello World!
>>> print('hao', 123)    # print可以打印多项
hao 123
>>> print('hao', 123, 'abc')   # 多项间默认以空格分隔
hao 123 abc
>>> print('hao', 123, 'abc', sep='***')   # 通过sep指定分隔符
hao***123***abc
>>> print('Hello' + 'World')   # 字符串可以用+拼接
HelloWorld

输入语句

>>> input()    # 从键读取数据
100
'100'
>>> input('number: ')   # 括号中的字符是屏幕提示语
number: 100
'100'
>>> num = input('number: ')   # 将输入保存到变量num中
number: 100
>>> num        # input读入的字符一定是字符型
'100'
>>> print(num)   
100
>>> num + 5    # 字符串和数字无法直接运算
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> int(num)    # 将字符串转成数字
100
>>> int(num) + 5   # 数字的四则运算
105
>>> str(5)     # 将数字转换成字符串
'5'
>>> num + str(5)    # 字符串拼接
'1005'

变量

字面量:如100、'name’这些数字、字符串等,它表示字面本身的含义

变量:可以变化的量,如变量a可以存100,也可以存’name’

变量名的约定

  • 首字符必须是字母或下划线
  • 其他字符可以是字母、数字或下划线
  • 区分大小写

推荐的命名方法

  • 变量名采用小写字母 pythonstring
  • 简短、有意义 pystr
  • 多个单词之间用下划线隔开 py_str
  • 变量名用名词,函数名用谓词(动词+名词) phone update_phone
  • 类名采用驼峰形式 MyClass

变量的应用

  • 变量在使用之前必须赋值
  • 变量在赋值的时候,决定了它是什么类型的
  • 变量赋值顺序是自右向左进行
>>> a = 3 + 4
>>> a
7
>>> a = a + 1
>>> a
8
>>> a += 1    # a = a + 1的简化写法
>>> a
9
>>> a++          # python不支持此写法
  File "<stdin>", line 1
    a++
      ^
SyntaxError: invalid syntax
>>> import this    # 显示python之禅
# 美胜丑、明胜暗、简胜繁
>>> ++a    # 此处不自增,只是正号而已
9

运算符

  • 算术运算符
>>> 10 + 5
15
>>> 10 - 5
5
>>> 10 * 5
50
>>> 5 / 3
1.6666666666666667
>>> 5 // 3    # 整除,只保留商
1
>>> 5 % 3    # 模运算,求余
2
>>> divmod(5, 3)   # 同时得到商和余数
(1, 2)
>>> a, b = divmod(5, 3)   # 把商和余数分别赋值给a和b
>>> a
1
>>> b
2
>>> 2 ** 3    # 乘方,幂运算
8
>>> 3 * 2 ** 3   # 幂运算优先级高
24
>>> 3 * (2 ** 3)   # 括号中的优先级高
24
  • 比较运算符:结果是True或False
>>> 10 > 5
True
>>> 10 > 50
False
>>> 10 < 20
True
>>> 10 >= 10
True
>>> 3 == 3    # 判断相等关系
True
>>> 5 != 6    # 不等于
True
>>> 10 < 20 < 30    # python支持连续比较
True
>>> 10 < 20 > 15    # 容易引起岐义,不推荐
True
>>> 10 < 20 and 20 > 15   # 等同于 10 < 20 > 15
True
  • 逻辑运算符
# and 两边的结果都为True,最终结果才为True
>>> 5 > 3 and 10 < 20
True
>>> 5 < 3 and 10 < 20
False
# or 两边的结果有一边为True,最终结果才为True
>>> 5 > 3 or 3 > 10
True
# not 取反
>>> not 5 > 3
False
>>> not 5 > 10
True

数据类型

python环境准备

python虚拟环境

虚拟环境相当于是把python隔离到一个目录中,安装软件包时,都安装到了虚拟环境目录。将来项目结束后,直接把虚拟环境目录删除即可。

创建虚拟环境

[root@room8pc16 python01]# python3 -m venv ~/python
[root@room8pc16 python01]# ls ~/python
# 激活虚拟环境
[root@room8pc16 python01]# source ~/python/bin/activate
(python) [root@room8pc16 python01]# python --version
Python 3.6.7

运行python

  • 交互解释器
(python) [root@room8pc16 python01]# python
>>> print('Hello World!')
Hello World!
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> 
  • 文件形式
(python) [root@room8pc16 python01]# vim /tmp/hi.py
print('Hello World!')

(python) [root@room8pc16 python01]# python /tmp/hi.py
Hello World!

数字分类

  • 整数:没有小数点

  • 浮点数:有小数点

  • 布尔数:True的值是1,False的值0

    >>> True + 1
    2
    >>> False * 3
    0
    
  • 复数:数学家为解决谁的平方等于-1,发明了复数

整数的表示方式

  • python默认以10进制表示数字
  • 8进制以0o开头
  • 16进制以0x开头
  • 2进制以0b开头
>>> 11
11
>>> 0o11
9
>>> 0o23
19
>>> 0x11
17
>>> 0x23
35
>>> 0b11
3

[root@room8pc16 ~]# cp /etc/hosts /tmp/
[root@room8pc16 ~]# ll /tmp/hosts 
-rw-r--r--. 1 root root 9806 71 15:45 /tmp/hosts
>>> import os
>>> os.chmod('/tmp/hosts', 600)
[root@room8pc16 ~]# ll /tmp/hosts 
---x-wx--T. 1 root root 9806 71 15:45 /tmp/hosts
>>> os.chmod('/tmp/hosts', 0o600)
[root@room8pc16 ~]# ll /tmp/hosts 
-rw-------. 1 root root 9806 71 15:45 /tmp/hosts
>>> os.chmod('/tmp/hosts', 493)
[root@room8pc16 ~]# ll /tmp/hosts 
-rwxr-xr-x. 1 root root 9806 71 15:45 /tmp/hosts

字符串

字符串指的是在引号中间的字符,单双引号没有区别。

>>> "tom's pet is a cat"
"tom's pet is a cat"
>>> name = 'tom'
>>> age = 20
>>> "%s is %s years old." % (name, age)
'tom is 20 years old.'
>>> words = "hello\nwelcome\ngreet"
>>> print(words)
hello
welcome
greet
# 三引号可以保留用户的输入格式
>>> wds = '''hello
... welcome
... greet'''
>>> print(wds)
hello
welcome
greet
>>> wds
'hello\nwelcome\ngreet'

>>> py_str = 'python'
>>> len(py_str)
6
>>> py_str[0]
'p'
>>> py_str[5]
'n'
>>> py_str[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> py_str[-1]
'n'
>>> py_str[-6]
'p'
>>> py_str[2:3]    # 切片操作,起始下标包含,结束下标不包含
't'
>>> py_str[2:4]
'th'
>>> py_str[2:6]   # 没有下标6,但切片不会报错
'thon'
>>> py_str[2:6000]
'thon'
>>> py_str[2:]   # 结束下标不写,表示到结尾
'thon'
>>> py_str[:2]   # 开头不写,表示从开头取
'py'
>>> py_str[::2]   # 步长值为2
'pto'
>>> py_str[1::2]
'yhn'
>>> py_str[::-1]   # 负数表示自右向左取
'nohtyp'

>>> 'python' + ' good'
'python good'
>>> py_str + ' good'
'python good'
>>> py_str * 3
>>> '*' * 50
'**************************************************'

#######################################
# yum install -y boxes cowsay
# cowsay 'Hello World'
# cowsay -l    # 列出所有可用形象
# cowsay -f dragon Hello World
# boxes -l
# echo 'hello world' | boxes -d ian_jones 
#######################################

列表和元组

列表和元组与字符串有很大的相似之处

>>> alist = [10, 20, 30, 'tom', 'jerry', [1, 2, 3]]
>>> len(alist)
6
>>> alist[0]
10
>>> alist[-1]
[1, 2, 3]
>>> alist[3:5]
['tom', 'jerry']
>>> alist + [100]   # 列表拼接
[10, 20, 30, 'tom', 'jerry', [1, 2, 3], 100]
>>> alist * 2    # 列表重复
>>> alist[-1] = 100
>>> alist
[10, 20, 30, 'tom', 'jerry', 100]

# 元组相当于是静态的列表
>>> atuple = (10, 20, 30, 'tom', 'jerry', 100)
>>> atuple[0]
10
>>> atuple[-1]
100
>>> atuple[2:4]
(30, 'tom')
>>> len(atuple)
6
>>> atuple[-1] = 200    # 报错,元组不能改变

字典

字典由无序的键值对构成

>>> adict = {'name': 'bob', 'age': 20}
>>> 'bob' in adict   # bob是字典的key吗?
False
>>> 'name' in adict   # name是字典的key吗?
True
>>> adict['name']    # 通过key取出value
'bob'
>>> adict['age'] = 22
>>> adict
{'name': 'bob', 'age': 22}

数据类型比较:重要

按存储模型分为:

  • 标量:数字、字符串
  • 容器:列表、元组、字典

按更新模型分为:

  • 不可变:数字、字符串、元组
  • 可变:列表、字典
>>> s1 = 'python'
>>> alist = [1, 2, 3]
>>> s1[0]
'p'
>>> alist[0]
1
>>> alist[0] = 10
>>> s1[0] = 'P'       # 报错,因为字符串不可变,不能原位修改
>>> s1 = 'Python'    # 整体重新赋值

按访问模型分为

  • 直接:数字
  • 顺序:字符串、列表、元组
  • 映射:字典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值