目录
个人背景
目前从事Java开发工作,想在闲余时间扩充下自己,学习契机应该是在去年11月份参加的华为举办的晟腾开发者大会,说是开发者大会但是其实~~是介绍产品的,而且没想到的是碰见了盛产学生的西安,当时到场的1/3都是在校生,一部分是来看产品的,还有一部分像我一样懵逼的...
学习目的
- 一直想提升自己学习能力,再找份副技术去学习
- 想了解深度学习人工智能方向
- 对python挺感兴趣的,经常跟朋友聊,听他说跟java 的对比
- 想了解下python有什么优势,以及为什么说入门容易,深入难
目前在阿里的训练营打卡学习就记录下吧
Task01
先从了解Python的基础知识开始,看起来Python 像弱类型语言,因为对语句和写法没有很细致的要求和检查,像作用域使用缩进来进行区分,总体上减少了很多不必要的代码
# 基本的输出控制台语句
print("打印到控制台")
Python的注释
python注释分为2种多行(也叫区间注释)和单行注释
# 这是单行注释
## 这也是单行注释
print("hello,python") # 你好,Python
# '''
三个单引号,表多行注释
'''
"""
三个双引号,也可表示多行注释
"""
当然多行注释也可以在一行显示,不过还是多行显示美观
Python的运算符
运算符大致分为五种,算术运算符、比较运算符、逻辑运算符、位运算符、其他运算符,计算的时候需要注意运算法的运算顺序
算术运算符
# TODO 2021.2.13 后续更新
相比于Java 多了整除和幂 猜测是为了更精确的运算,不知道是否常用后续再进行验证 更新
比较运算符
逻辑运算符
位运算符
其他运算符
这里,直接使用简介的语法来作为比较
如果对比Java的比较来说
in 和not in 就是判断元素是否存在与集合
is 和 not is 就是判断是否是同一元素/对象,比较地址指向
# 像== !=则比较的是值是否相同 特定情况下,如:判断的是固定的值如字符串 则 is not is 和 == != 等价
还有个运算符为三元运算符 作用就是 结果 =判断条件 if true 结果A else 结果B
# 写法:
x, y = 4, 5
small = x if x < y else y
print(small)
运算顺序
这里需要添加一个,括号在运算符运算之前
变量和赋值
变量
因为Python是弱类型语言,所以对定义没有什么特殊的要求,不用去特地声明变量的类型,对于变量,大小写区分,可以为数字,字符下划线组成,但是不能为下划线开头,且变量需要进行赋值
Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。内部会去识别对象的类型.
- 基本类型:整型、浮点型、布尔型
- 容器类型:字符串、元组、列表、字典和集合
''' dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表 带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(), 该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。 ''' b = dir(int) print(b)
使用dir()方法就可以查看方法和类型列表,具体根据文档使用,慢慢熟悉并使用习惯
Python的包
里面有很多用途广泛的包 (package),用什么你就引进 (import) 什么。包也是对象,也可以用上面提到的`dir(decimal)` 来看其属性和方法。
使用方法:
import decimal #导包
from decimal import Decimal 具体到对象
print(dir(decimal))
#out
"""
['BasicContext', 'Clamped', 'Context', 'ConversionSyntax', 'Decimal',
'DecimalException', 'DecimalTuple', 'DefaultContext', 'DivisionByZero',
'DivisionImpossible', 'DivisionUndefined', 'ExtendedContext', 'FloatOperation',
'HAVE_THREADS', 'Inexact', 'InvalidContext', 'InvalidOperation', 'MAX_EMAX',
'MAX_PREC', 'MIN_EMIN', 'MIN_ETINY', 'Overflow', 'ROUND_05UP', 'ROUND_CEILING',
'ROUND_DOWN', 'ROUND_FLOOR', 'ROUND_HALF_DOWN', 'ROUND_HALF_EVEN', 'ROUND_HALF_UP',
'ROUND_UP', 'Rounded', 'Subnormal', 'Underflow', '__builtins__', '__cached__',
'__doc__', '__file__', '__libmpdec_version__', '__loader__', '__name__',
'__package__', '__spec__', '__version__', 'getcontext', 'localcontext', 'setcontext']
"""
bool()方法: 创建布尔值
bool
作用在基本类型变量:X
只要不是整型0
、浮点型0.0
,bool(X)
就是True
,其余就是False
bool
作用在容器类型变量:X
只要不是空的变量,bool(X)
就是True
,其余就是False
。type()方法: 判断类型
isinstance()方法: 判断方法,考虑继承关系-转换为整型 `int(x, base=10)`
转换为字符串 `str(object='')`
转换为浮点型 `float(x)`
总结:
这次Task主要有以下几点:
- python的基本语法
- 计算机基础的相关知识.结合python的位运算符的操作,实现多种操作方式操作
- 三种语句, 顺序语句 、[if , else , ifel ] 的判断语句格式、[while循环, while else循环,for循环 ]循环语句
- 异常处理,并使用try exception 去捕获异常 或者最后添加finally最后实现
了解了很多python相关知识,基本上和Java理解上区别不大,诸如type()和isinstance()方法区别,像输出这些,输出集合,相当于foreach循环和前端的vue的v-for都是在里面设置对应方法就可以实现不同的效果,但是基本意思上还是有区别的,这些后面再详细了解下底层的实现.
个人觉得虽然和Java有相似点,但是不能被Java所框住了,毕竟每个语言都有自己的特点,这点要自己去进行思维开阔,不要被Java所禁锢了,就这样吧,后面加油.