Python学习(1)

本系列内容来源于 廖雪峰的Python教程 点击查看原文

入门零碎知识(主要回顾和Java不同的地方)

python3 打印

print("Hello Wolrd!")
句末不要分号

多字符打印

print("hello","world")
中间用 空格相加

运算

print() 里面可以直接进行运算

读取控制台输入

input() 读取出来是个字符串

布尔值 True False 记得首字母要大写
布尔值可以用and、or和not运算

python的除法

/ 这个是数学上的直接相除 得到的结果一定是浮点数

// 两个斜杠 是整除

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

Python对bytes类型的数据用带b前缀的单引号或双引号表示:

b'ABC'

python中的格式化

和c语言差不多
print('Hello, %s' % 'world')

print('%s%s'% ('你是','好人'))

输出:'Hello, world'
你是好人

%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

可以都使用%s

如何要输入%时, 使用%%

Python中的列表(list),有序集合,可以随时添加删除元素

list = ['a','b','c']

len(list) = 3

list[0]  通过下标进行访问

python支持倒叙访问
list[-1] 取最后一个元素
list[-2] 取倒第二元素

列表支持内嵌

>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']

其中 s[2] 又是一个列表

元组 tuple

有序列表,与list很相似,但是tuple一旦初始化就不能修改.

 t = (1, 2)

tuple注意点:

t = (1)   
这句话有歧义 ,会被当括号处理
所有 元组中只有一个元素的时候,这样定义
t = (1,)

>>> t = (1)
>>> t
1
>>> t=(1,)
>>> t
(1,)

else if 语句

可以简写为 elif

age = 3
if age >= 18:
    print('adult')
elif age >= 6:
    print('teenager')
else:
    print('kid')

if语句还可以这样写

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False。
if x:
    print("True")

dict 字典

查找速度极快,和java的的map差不多

d = {"1":"tom","2":"youxuan"}

set 无序,不重复

新建要传一个list列表
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

数据类型转换

>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False

函数引用

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1

空函数

def nop():
    pass

if age >= 18:
    pass

pass是占位符,如何不加的话,程序会报错

参数检查 isinstance关键字

if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')

函数多个返回值

import math

def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

注:如果接收值是一个,返回值会自动转换为一个tuple    

函数的默认参数

def power(x,n=2):
    print(x,n)

注:默认参数要在必选参数后。
    默认参数要牢记一点:默认参数必须指向不变对象!

函数的可变参数

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum +n * n
    return sum

调用:
calc(1,2,3)
calc(1,2,3,4,5)

可以传入0个或任意个参数

如何有一个存在的tuple或者list:如nums = [1,2,3]
可以这样调用calc(*num)

关键字参数

可以传入0个或者多个参数,会被自动封装为一个dict

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)


>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

命名关键字函数

def person(name, age, *, city, job):
    print(name, age, city, job)

和关键字参数**kw不同,命名关键字参数需要一个特殊分号

>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
分隔符*,*后面的参数被视为命名关键字参数。


如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

def person(name, age, *args, city, job):
    print(name, age, args, city, job)

函数的参数组合

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

Python的高级特性

切片

相当于Java中的截取

list tuple string 都支持切片
 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
 >>> L[0:3]
['Michael', 'Sarah', 'Tracy']

>>> L[:3]
['Michael', 'Sarah', 'Tracy']

第一个索引不填,默认为0


>>> L[-2:]
['Bob', 'Jack']
>>> L[-2:-1]
['Bob']
可以从后面开始取 倒第一下标为-1


前10个数,每两个取一个:
>>> L[:10:2]
[0, 2, 4, 6, 8]


所有数,每5个取一个:
>>> L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]


只写[:]就可以原样复制一个list:
>>> L[:]
[0, 1, 2, 3, ..., 99]



 字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

 >>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,889评论 0 3
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,656评论 0 5
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,546评论 1 118
  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 1,660评论 0 5
  • 焦虑,像在自己心里画出深夜的海面 潮汐将月光淹没又重来 有时它就像是一首忧伤的小夜曲 痴情又落寞的人儿在旷野吹箫 ...
    蒋菱阅读 463评论 1 4