Python - 3.6 学习第一天

开始之前

基础示例

Python语法基础,python语法比较简单,采用缩紧方式。

# print absolute value of a integer
a = 100
if a >= 0:
    print(a)
else:
    print(-a)

可以看到,注释以#开头,python的变量不需要任何前缀,行结束不需要结束符号,非常符合我们自然语言的阅读和书写习惯。当语句以:结尾时,缩紧的语句视为代码块。

Python是大小写敏感的,这一点需要特别注意。

输入与输出

Python可以使用input()函数读取用户的输入,使用print()进行屏幕的输出。默认情况下,输入的内容为字符数据类型。

数据类型

整数

Python可以处理任意大小的整数,在程序中的表示方法和数学上的写法一模一样,可以使用0xff00的方式表示十六进制。

Python中使用/进行除法运算,得到的结果是浮点数。使用//进行除法运算,得到的结果是整数。使用%,表示取余数。

浮点数

浮点数就是小数,可以使用数学写法,如:1.23,-9.01,也可以使用科学计数法表示,如:1.23e9,1.2e-5

字符串

字符串是使用`括起来的任意文本。可以使用*对特殊字符进行转义。可以使用r‘‘的形式,表示内部的字符串默认不进行转义。对于字符串内有换行等多行内容的,可以使用’’’…’’’的形式,多行字符前也可以加r*。

在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。以Unicode表示的str通过encode()方法可以编码为指定的bytes,如:>>> ‘ABC‘.encode(‘ascii’)。反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法

在Python中,采用的格式化方式和C语言是一样的,如下:
>>> ‘Hi, %s, you have $%d.‘ % (‘Michael‘, 1000000)

布尔值

布尔值:TrueFalse。也可以用布尔代数表示:3 > 2,* 3 < 2。布尔值的运算符号:andornot*。

空值

空值是Python里一个特殊的值,用None表示。

变量

Python中的变量时动态变量,即变量的属性是在赋值的时候才决定的,变量名称必须是大小写英文、数字和*_*的组合,且不能用数字开头。Python中没有常量的概念,通常使用全部大写的变量来表示常量。

列表 list

list 是一种有序的集合,可以随时添加和删除其中的元素。用索引来访问list中每一个位置的元素,索引是从0开始的。当索引超出了范围时,Python会报一个IndexError错误。如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素。

>>> classmates = [‘Michael’,’Bob’,’Tracy‘]
>>> classmates
[‘Michael’,’Bob‘,‘Tracy’]
>>> len(classmates)
3
>>> classmates[0]
‘Michael’
>>> classmates.append(‘Adam’)    #追加元素到末尾
>>> classmates
[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘Adam’]
>>> classmates.insert(1, ‘Jack’)    #追加元素到指定位置
>>> classmates
[‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘, ‘Adam’]
>>> classmates.pop()    #删除末尾的元素,使用pop(i)可以删除指定位置的元素
‘Adam‘
>>> classmates
[‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘]

元组 tulp

元组 tulp 也是有序列表,与list的区别在于,一旦初始化就不能修改。没有append、insert等方法。
tulp的定义方式如下:

>>> classmates = (‘Michael’, ‘Bob’, ’Tracy‘)

tulp 本身的元素不能发生变化,但是如果元素为list,那么list中的内容是可变的。

字典 dict

dict 全称 dictionary ,在其他语言中称为 map,在PHP中其实就是 Array,使用键-值(Key-Value)的方式进行存储,具有极快的查找速度。使用范例

>>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85}    #dict的定义
>>> d[‘Michael’]    #dict取值的方式
95
>>> d[‘Adam‘] = 67    #dict设置新值的方式
>>> ‘Thomas‘ in d     #判断key是否存在
False
>>> d.get(‘Thomas’)   #get方式取值,如果不存在则返回None
>>> d.get(‘Thomas‘,-1)#指定不存在时的返回值
-1
>>> d.pop(‘Bob’)      #删除某个key
75

set

set和dict类似,也是一组key的集合,但不存储value。如下示例:

>>> s = set([1, 2, 3])    #初始化时提供一个list作为输入集合
>>> s
{1, 2, 3}
>>> s.add(4)              #使用add方法添加元素
>>> s
{1, 2, 3, 4}
>>> s.remove(2)           #使用remove方法
>>> s
{1, 3, 4}

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。

控制语句

条件判断

条件判断比较简单,主要是不要忘记写:,看看例子吧。

>>> age = 3
>>> if age >= 18:
...     print(‘your age is‘, age)
...     print(‘adult‘)
... else:
...     print(‘your age is‘, age)
...     print(‘teenager‘)
...
your age is 3
teenager

更多的条件判断。

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

循环

Python中的循环有两种,一种是for...in循环,依次把list或tulp中的每个元素迭代出来。

>>> classmates
[‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘]
>>> for name in classmates:
...     print(name)
...
Michael
Jack
Bob
Tracy

第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

跳出循环,可以使用 break 跳出循环。
跳过本次循环,可以使用 continue 跳过本次循环,继续下一次循环。

函数

调用函数

Python中内置了很多函数,可以直接调用。在交互模式中,可以通过help(abs)查看函数的用法。

定义函数

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。

示例如下:

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

在Python交互环境中定义函数时,注意Python会出现的提示。函数定义结束后需要按两次回车重新回到>>>提示符下。

返回多个值

在其他语言中,一般只能返回一个值或者一个数组、对象,在Python中,可以通过tulp变通的返回多个值。

import math

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

>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print(x, y)

在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

位置参数

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

def power(x):        #x 就是一个位置参数
    return x * x

def power(x, n):    #x,n都是位置参数
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

def power(x, n=2):    #x,n都是位置参数,n设置了默认值
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

有几点要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错
二是当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
有多个默认参数时,调用的时候,既可以按顺序提供默认参数。也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。
需要注意的是:默认参数必须指向不变对象!

可变参数

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

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去。

关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

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

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

#可以先组装出一个dict,然后,把该dict转换为关键字参数传进去
>>> extra = {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘}
>>> person(‘Jack‘, 24, city=extra[‘city‘], job=extra[‘job‘])
name: Jack age: 24 other: {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘}

#简化的写法
>>> extra = {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘}
>>> person(‘Jack‘, 24, **extra)
name: Jack age: 24 other: {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘}

extra表示把extra这个dict的所有key-value用关键字参数传入到函数的kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。

命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下。命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

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

>>> person(‘Jack‘, 24, city=‘Beijing‘, job=‘Engineer‘)
Jack 24 Beijing Engineer

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

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

参数组合

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

参考资料:
廖雪峰的Python教程

时间: 2024-08-12 22:24:49

Python - 3.6 学习第一天的相关文章

Python学习第一天

一.Python的简介 1.什么是python? Python(发音:[ 'paiθ(?)n; (US) 'paiθ?n ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行. 特点: ①可扩充性.新的内置模块(module)可以用C 或 C++写成,而我们也可为现成的模块加上Python的接口: ②清晰的语言.因为它的作者在设计它的时

python 学习第一天

python 学习了好久,发现还是个小白,python还是不会用,从今天起每天学写一点小程序,做个打不死的小强. 相关知识:列表,字典 #!/usr/bin/env python people = { 'yong':{'phone':'123', 'addr':'Shang hai' }, 'bu':{'phone':'456', 'addr':'Wu han' }, 'yan':{'phone':'789', 'addr':'He nan' } } lables = {'phone':'pho

Python学习第一弹——Python环境搭建

一.Python简介: Python,是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用

Python2.7.3学习-第一个程序Hello Python World

Hello World 每学一门语言开始的第一程序都是Hello World ,当然了Python也不例外,下面开始我们的Python第一个程序编写: 1,命令行: (1)打开终端,输入python,则进入了Python环境 (2)语法:print() 输入命令:print('Hello World !'),则会对应的显示Hello World! 2,JEdit文本: 编写代码:print ‘ Hello World !’ 保存命名为 HelloWorld.py 到 /home/xz/Pytho

【python标准库学习】thread,threading(一)多线程的介绍和使用

在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收.当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线程运行,这个线程就是主线程main,在主线程中所创建的新的线程都是子线程,子线程通常都是做一些辅助的事.python中提供了thread和threading两个模块来支持多线程. python中使用线程有两种方式,第一种是用thread模块的start_new_thread函数,另一种是用threa

简明 Python 教程中的第一个备份脚本

第一次学习python写的脚本 原为简明 Python 教程中的第一个脚本 原脚本如下 #!/usr/bin/python # Filename: backup_ver1.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you are u

《灰帽Python-黑客和逆向工程师的Python编程》学习记录

ctypes是Python语言的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数. 操作环境:CentOS6.5 Python版本:2.66 ctypes是强大的,强大到本书以后介绍的几乎所有库都要基于此.使用它我们就能够调用动态链接库中函数,同时创建各种复杂的C数据类型和底层操作函数.毫无疑问,ctypes就是本书的基础. 第一章 搭建开发环境 1.3.2 使用动态链接库 from ctypes import * libc = CDLL("libc.so.6"

Python结合OpenCV学习资料

原文地址:http://leihuang.net/2014/05/19/List-Interviews/ 单链表的一些常见面试题汇总 单链表反转/逆序 求单链表倒数第N个数 找到单链表的中间结点 如何判断链表是否有环的存在 单链表建环,无环链表变有环 如何知道环的长度? 如何找出环的连接点在哪里? 删除单链表中的重复元素 下面我先简单叙述一下每道题的思路,然后把实现的程序一起贴出来,不会讲得太细,我觉得只要有了思路之后,接下来的难点就是语言上的一些细节问题了,这个不自己去实现,听别人讲是体会不到

Python subprocess模块学习总结

从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息 一.subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec