Python 学习系列之基础(一)

写在开头

Python 是之前一直想学习的一门语言,但是因为没有坚持下来都放弃了。那为什么这次会突发奇想现在开始学习呢?原因有两个,一个是端午没有提报上加班,因此加上周末有三天假期;二是在家无聊的时候,想着为什么不把时间花在学习上呢?于是打开《极客时间》 一看,发现之前领的课程还能看,因此打算在家把这个课程刷完。(默默的下定决心要在家把没有加上班损失的钱赚回来)

​ 学习 Python 最开始的主要目的之一是想写一个快速批量删除的工具🔧,或许之后还有其他的作用~

文章主要参考链接🔗

一、Python 简介

1、什么是 Python

Python 是一门高级语言,和 Java 语言、C语言一样,但是比它们更加 简洁方便。在我看来,Python 可以写很多好玩且有用的小工具🔧。当然,Python 可以写爬虫,可以写人工智能等等,需要我们去发掘它的各种作用。

PS: Python 有2.x和3.x的版本,目前强烈建议使用3.x来进行开发,如果你想了解它们之间有什么区别,可以点击 这里

2、开发前准备

  • 开发工具:直接上手 PyCharm,对于新手足够了,你可以点击 这里 下载。
  • 下载:请点击 这里 (Python 3.x),根据不同系统进行安装,安装完毕可以输入 python3 查看(截图为 Mac),当在 >>> 状态下表明你已经进入了 Python 的开发环境。

python3_run

3、第一个Python 程序

  • 使用 PyCharm

    helloworld_pycharm

使用命令:

helloworld_cmd

二、Python 基础

因为本人有 Java 语言的基础,所以下面的内容会基于 Python 和其他语言的异同来讲解,如果你是新手,请点击 这里 了解

1、数据类型和变量

基本数据类型
  • 整数 / 浮点数 :和 Java是一样的;

  • 字符串:可以使用单引号 ‘’或者双引号 “” 括起来的任意文本,如 ‘abc’ 或者 “abc” ;区域于 Java 只能是双括号 “abc”;

    PS:

    • 转义字符 \ 可以用于标识既有‘’又有 “” 的情况,如 print("I\'m \"OK\"!") 输出内容是:I'm "OK"!

    • 使用r能够去除反义,直接输出 \,如 print(r’’’hello,\nworld’’’) 输出的是 hello,\nworld,如果没有r,那么输出的是

      hello, world

  • 布尔值,和 Java一致;

  • 空值:None 是一个特殊的空值;
变量和常量
  • 变量:Python 里面的变量很方便,可以直接赋予,比如 a = 1 ,这就定义好了一个值为 2 的整数型变量 a无须和 Java 一样定义好变量的类型。从这里可以看出,Python 是一种 动态语言

    PS: Python 没有常量变量之分,所谓的常量实现其实也是一个变量,只不过使用 大写字母来区分,本质上还是一个变量,可以再次写入值。

  • 打印变量:如 print("hello, my name is %s" %"jian") 的打印结果是 hello, my name is jian,多个参数替换可以用括号括起来 ;

列表和元组
  • 列表(List):一种有序集合,可以随时添加和删除,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 定义方式  可以包含不同类型的变量
    language = ['C', 'python', 'java', ['C++', 'php']]

    # 增
    language.insert(0, 'go')
    print(language)
    # 删
    language.pop(0)
    print(language)
    # 改
    language[0]
    print(language)
    # 查
    print(language[0])

    # python有一个很有意思的地方是,如果给的索引值是负数的话,会倒着数,当然,如果超过其长度的话,还是会出现越界
    print(language[-1]) --> ['C++', 'php']
  • 元组(tuple): 元组和list很相似,但是它的元素无法更改。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 定义方式
    language = ('C', 'python', 'java', ['C++', 'php'])

    # 定义一个空的元组
    person = ()

    # 定义一个元素的元组 需要加逗号用于区分()不是括号而是元组
    person = (myself, )

    # PS:虽然元组的元素无法更改,但是如果元组的某一个元素是列表,那么该列表的元素是可以更改的,比如
    language[3][0] = 'go'
  • set:无序和无重复元素的集合

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 传入的参数为list
    s = set([1, 1, 2, 2, 3, 3])
    print(s)
    # 输出是
    {1, 2, 3}

    # 操作
    s.add(xxx)
    s.remove(xxx)
字典dict

类似于 Java 里面的 map,使用 key-value 存储数据

  • 增删改查

    1
    2
    3
    4
    5
    6
    # 增和改
    d["key"] = ‘value’
    # 删
    d.pop("key")
    # 查
    d.get("key", "defaulut_value")
  • dict 查找速度很快的原因:key-value 的存储实现方式是通过 hash表去实现的,理论上 时间复杂度是O(1) ,考虑到冲突碰撞,最差的情况下时间复杂度是 O(n);

    img

    图片来源

  • list 相比较,dict具有以下特点:

    • 查找和插入的速度极快,不会随着key的增加而变慢;
    • 需要占用大量的内存,内存浪费多。

PS:dict 是以时间换空间的一种方式;

2、条件判断和循环语句

Python 的条件判断和循环语句与 Java 区别不大,主要是语法的小区别;

if语句
1
2
3
4
5
6
7
8
9
# 从上往下执行,满足一个条件就跳过后面的判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
循环语句
1
2
3
4
5
6
7
8
9
10
11
12
13
languages = ('C', 'python', 'java', ['C++', 'php'])
# for···in 结构
for language in languages:
print(language)

# while 结构
languages = ('C', 'python', 'java', ['C++', 'php'])
count = 0
while count < len(language):
print(language[count])
count = count + 1

# 当然,也可以使用break和 continue关键字, break 直接退出循环,continue 退出当次循环,开启下一次循环;

三、函数

1、函数的定义

使用 def 关键字定义,如

1
2
3
4
5
6
7
8
9
10
11
12
languages = ('C', 'python', 'java', ['C++', 'php'])
# 定义函数 需要函数名和参数个数
def my_traverse(x):
for x in languages:
print(x)
# 会自动检查参数类型是否正确,如果不对会报错
my_traverse(language)


# 空函数定义 占位
def nop():
pass

可以使用 return 返回函数运算结果,可以同时返回多个值(本质上是一个 元组)

2、参数

  • 可以定义默认参数,类似于 Kotlin;

  • 可以定义可变参数,如

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # *numbers 表示把numbers这个元组的所有元素作为可变参数传进去
    def calc(*numbers):
    sum = 0
    for n in numbers:
    sum = sum + n * n
    return sum

    # 传入的参数是可以变化的
    print(calc(1))
    print(calc(2, 3))
  • 关键字参数

    1
    2
    3
    4
    5
    6
    def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

    person('Bob', 35, city='Beijing')
    # 输出是:name: Bob age: 35 other: {'city': 'Beijing'}
    # PS:name, age为必选参数, **kw是关键字参数,用于函数的扩展功能;
  • 命名关键字参数

    1
    2
    3
    # 还可以限定关键字参数传入的名称,只接受 city和job作为关键字参数,不过这样定义之后,必须要传入
    def person(name, age, *, city, job):
    print(name, age, city, job)
  • 参数组合

    在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

四、结尾

写到这里,本文基本结束了,文章主要是将开始学习 Python 的一些基础知识进行了总结和归纳,参考的链接也在开头附上了,应该会出几篇 Python 系列的文章~ 希望能给大家带来点帮助,如果有不理解的地方欢迎👏 通过邮件联系我(jianwan1221@q q.com)

坚持原创技术分享,您的支持将鼓励我继续创作!