[python]---从java到python(01)---基础与入门上手

前言

我本是java派的,已经有几年了,直接也接触过其他语言,比如从最早的汇编语言到高级语言始祖的C;
但是近来越发觉得python很火,现在以我的视角开始写入门python基础,算是入坑了;
我的计划是这个系列要更契合那些有java基础的同胞们,用你们已有的java基础,用对比的方式,更快的入手python

1.python介绍

python的版本现在主要分为python3.0和python3.0以下,因为相对于Python的早期版本,python3.0是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

后面我们以python3.0为例

2.python的一些简单的常识

1.控制台打印语句,

对于java来说,为:System.out.println();
python为:print()

2.定义一个变量

java是有8种基本类型或者集合或者自定义对象作为引用
python是不用引用的,直接定义就好,python会自动识别类型
举个例子:

java:int a = 1;String b = "hello!";
python:a = 1b = "hello!"

3.类型

java中有8大基本类型和list,set,map,数组,String
python中有数字,字符串,列表,元组,字典

字符串:
字符串可以说是java开发中最常用到的了, String str = "hello"
还有字符串的截取,拼接等等,甚至可以说是增删改查样样都是手到擒来python中的字符串,也是增删改查,但方式稍有不同:# 字符串截取
a = "hello"
print(a)  # hello
print(a[0])  # h
print(a[0:1])  # h
print(a[0:2])  # he
print(a[0:5])  # hello
print(a[:5])  # hello# 字符串in  not in
if ("h" in a):print("h in", a)
else:print("h not in", a)if ("g" not in a):print("g not in", a)
else:print("g in", a)# 字符串的三引号
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print(para_str)# 字符串的转义
print("abc\ndef")
print(r"abc\ndef")# 字符串的格式化
print("我叫%s,今年%d岁" % ("张三", 30))
数字

java中有byte,short,int,long,float,double,是按照占用空间和空间存储来严格划分
python中就int和float,代表一切了,这有点像js中的风格,业内称为弱引用

元组

python的元组,像java的list,但元素不可变
作为参数时,前面加*
使用: “aa”,“bb”,"cc"或 *range(10)

# 元组定义用小括号,逗号隔开,元组内元素不可更改,其他功能与列表类似
tup1 = ("aa", "bb", 123, 456)
#
# tup1[0] = "zz"  # 这行会报错
# print(tup1)# 元组中只有一个元素的时候,元素后面需加上逗号,否则会被认为其他类型
tup2 = (2)
print(type(tup2))  # <class 'int'>
tup3 = (2,)
print(type(tup3))  # <class 'tuple'>
列表

python的列表,就像java的List集合

# 列表定义用大括号,逗号隔开,获取某个元素,遍历
list1 = ["aa", "bb", 123, 456]
print(list1[0])  # aa
print(list1)  # ['aa', 'bb', 123, 456]
for x in list1:print(x)# 列表尾部增加元素
list1.append("cc")
print(list1)  # ['aa', 'bb', 123, 456, 'cc']# 删除某个固定index的元素
del list1[4]
print(list1)  # ['aa', 'bb', 123, 456]# 修改
list1[0] = "zz"
print(list1)  # ['zz', 'bb', 123, 456]
字典

python的字典,就像java的Map集合

作为参数时,前面加**
使用: name=aa 或 **{“name”:“aa”}

# 字典就是{}定义包住,里面是键值对,键值对直接逗号隔开,键与值冒号隔开
# 值可以是任意对象
# 键可用数字,字符串,或者元组,不能用列表
# 键不可重复,若定义重复,后面的会覆盖前面的值
dic1 = {"aa": 11, "bb": 22, "aa": 33}
print(dic1)  # {'aa': 33, 'bb': 22}
# 字典遍历
for x in dic1:print(x)print(dic1[x])
集合

python的集合,感觉就像java的Set集合

# 集合(set)是一个无序的不重复元素序列
# 可以使用大括号 { } 或者 set() 函数创建集合
# 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
# set()中只能创建一个,但可以放一个元组
s1 = {"aa", "bb", "cc"}
s2 = set(("aa", "bb", "cc"))
print(s1)  # {'cc', 'bb', 'aa'}
print(s2)  # {'cc', 'bb', 'aa'}# 增
s1.add("dd")
print(s1)  # {'cc', 'dd', 'bb', 'aa'}
# 删,若元素不存在会报错
s1.remove("dd")
print(s1)  # {'cc', 'bb', 'aa'}
# 删,若元素不存在不会报错
s1.discard("dd")
print(s1)  # {'cc', 'bb', 'aa'}
# 随机删一个元素
s1.pop()
print(s1)
# 清空
s1.clear()
print(s1)  # set()

定义一个函数

def hello():print("hello")
#参数可以默认值,但必须放在最后面
def hello(name,age=18):print("hello")
#调用可以不指定默认参数
hello(zhangsan")
#这种参数的调用比较特殊:
def hello(*,name,age):print("hello")
#调用必须指定形参名字
hello(name="zhangsan",age=18)
#入参必须是字典类型
def hello(**name):print("hello")
#调用
hello(name="zhangsan")
hello(**{"name":"zhangsan"})
#入参必须是元组类型
def hello(*name):print("hello")
#调用
hello("zhangsan","lisi","wangwu")
hello(*range(10))
#匿名函数
a = lambda x,y:x+y
#等同与下面这个普通函数
def a(x,y):return x+y

其他的方法调用,和java基本一样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AES加密算法原理

一、摘要 AES&#xff08;The Advanced Encryption Standard&#xff09;是美国国家标准与技术研究所用于加密电子数据的规范&#xff0c;在2002年5月26日建立。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。AES 是一个新的可以用于保护电子数据的加密算法…

java获取本机ipv4,并使用Google Guava 缓存

java写个util,获取本机ip,并使用Google Guava 缓存起来 四个方法: 获取本机ipv4ip转16进制16进制转ip校验ip 首先,Google Guava使用的maven配置 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version&g…

OpenSSL库概述

一、背景技术SSL是Secure Sockets Layer&#xff08;安全套接层协议&#xff09;的缩写&#xff0c;可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时&#xff0c;提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户…

短信微信等消息发送系统的架构设计

消息发送系统 项目中的一种做法,简化总结如下 1.对外暴露接口1,供业务方调用 2.接口2的实现就是同步发送各种消息,比如发短信,发微信等,但不保证 3.对外暴露接口2,供业务方调用 4.接口2内部实现,也是发送消息,但是是通过mq解耦的 4.1.业务方调用接口2后,接口2的实现将会发送一…

大数运算库简介

一、技术背景在网络安全技术领域中各种加密解密算法的软件实现上始终有一个共同的问题就是如何在普通的 PC 机上实现大数的运算。我们日常生活中所应用的 PC 机内部字长多是32 位或 64 位&#xff0c;但是在各种加密解密的算法中为了达到一定的安全强度&#xff0c;都是要求在1…

内存溢出,频繁full gc 处理思路

内存溢出,频繁full gc 处理思路 1.导出整个JVM 中内存信息 jmap -dump:formatb,file文件名 [pid] 2.分析dump文件的两种方式: 2.1. jdk安装目录下,bin目录下,jvisualvm.exe双击打开 文件–装入–选择dump出来的文件 就可以开始分析了2.2. 使用eclipse,安装插件mat(MemoryAn…

Base64编码解码原理

一. Base64编码由来 为什么会有Base64编码呢&#xff1f;因为有些网络传送渠道并不支持所有的字节&#xff0c;例如传统的邮件只支持可见字符的传送&#xff0c;像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制&#xff0c;比如图片二进制流的每个字节不可…

eclipse mat 打开dump文件,明明大小1G,打开后却只有不到100M.其他的去哪了

eclipse mat 打开dump文件,明明大小1G,打开后却只有不到100M.其他的去哪了 Used heap dump 显示的大小远小于dump文件大小 解决: window-->Preferences-->memory Analuzer-->勾选keep unreachable objects-->apply and close

MVP模式介绍

一、概述MVP 是从经典的模式MVC演变而来&#xff0c;它们的基本思想有相通的地方&#xff1a;Controller/Presenter负责逻辑的处理&#xff0c;Model提供数据&#xff0c;View负责显示。二、MVC和MVP的区别作为一种新的模式&#xff0c;MVP与MVC有着一个重大的区别&#xff1a;…

eclipse mat 分析dump文件,打开文件报错,out of memeory

eclipse mat 分析dump文件,打开文件报错,out of memeory 解决: 1.打开eclipse报out of memeory通用 window-->Preferences-->java-->installed JREs-->选中-->edit--> 在default VM arguments栏中加入:-server -Xms4096m -Xmx4096m -XX:PermSize512m -XX:M…

VIPER模式介绍

一、概述VIPER模式的理念不属于MV(X)系类&#xff0c;其理念来自于建筑设计。建筑领域流行这样一句话&#xff0c;“我们虽然在营造建筑&#xff0c;但建筑也会重新塑造我们”。正如所有开发者最终领悟到的&#xff0c;这句话同样适用于构建软件。编写代码中至关重要的是&#…

mysql索引(b+tree)小记

索引:快速检索的数据结构,缺点是插入时要创建索引树,所以索引不能太多 1.hash O(1) 时间复杂度低 有冲突,不支持范围查询,不支持排序 2.二叉树BST 平衡树:O(logn) 缺点:当树不平衡时,相对于没有索引 3.红黑数 相对二叉树,相对平衡 插入逐渐增大时,也会有右倾,也不是很平衡…

强制消除Xcode警告的方法

比如我已经知道某行会报警告了&#xff0c;但是代码有这么写的道理&#xff0c;实在不想看到警告&#xff0c;可以用下面这个宏把这几行代码包住&#xff0c;就可以消除警告了。#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wunused-variable"/…

springMVC 源码级别总结原理,DispatcherServlet核心方法

前言 springMVC自我总结 本次maven: <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.…

SQLite3中的数据类型

一、概述 大多数的数据库引擎&#xff08;到现在据我们所知的除了sqlite的每个sql数据库引擎&#xff09;都使用静态的、刚性的类型&#xff0c;使用静态类型&#xff0c;数据的类型就由它的容器决定&#xff0c;这个容器是这个指被存放的特定列。 Sqlite使用一个更一般的动态类…

一个java工程师必知的安全意识(信息传输篇)

我们在遇到涉及用户密码&#xff0c;用户联系方式&#xff0c;身份证信息等敏感字段的时候&#xff0c;一般的处理方式是&#xff1a; 1.传输使用密文&#xff0c;拒绝明文传输用户密码&#xff0c;推荐明文加盐加密&#xff0c;后台再解密 比如要传输的明文是123456的明文密…

关于iOS7里的JavaScriptCore framework

在iOS7沸沸扬扬的扁平化论战之外&#xff0c;WWDC 2013还是公布了很多让开发者小兴奋的点&#xff0c;其中包括多任务加强支持background fetch和transfer&#xff0c;近场通信的AirDrop和p2p&#xff0c;以及游戏控制器和游戏中心的加强&#xff1b;当然还包括了让web开发同学…

[nginx报错]---unknown directive chunkin in /XXXXX/XXXXXX:XX的几种解决方式

问题&#xff1a; nginx报错:unknown directive “chunkin” in /XXXXX/XXXXXX:XX 解决&#xff1a; 当出现unknown directive&#xff0c;一般有个反应&#xff0c;就是nginx中&#xff0c;要么配置格式不对&#xff0c;要么多了什么东西&#xff0c;要么就是有不支持的语法…

[数据库] ------ mysql 执行计划

mysql 执行计划 简单来说&#xff0c;mysql整体架构分为三块&#xff1a;应用层&#xff0c;逻辑层&#xff0c;物理层 应用层&#xff1a;负责与客户端交互&#xff0c;建立连接&#xff0c;返回数据&#xff0c;响应请求。 逻辑层&#xff1a;负责查询处理&#xff0c;事务管…

[数据库] ------ mysql规范

mysql规范&#xff1a; mysql优化的第一步&#xff0c;就是规范&#xff0c;国有国法&#xff0c;家有家规&#xff0c;一个团队在一起开发&#xff0c;也一定要有一套明确的规范来相互制约&#xff0c;下面这些规范只是作为一个互联网行业的建议&#xff0c;我相信一个团队最…