python写ios_人生苦短,快用Python | 写给iOS程序员的Python手册

这篇博客旨在帮助iOS开发者理解Python,介绍了查看Python版本、Hello World示例、类与对象、逻辑运算、nil的表示、继承、模块引用及数组概念。通过阅读,iOS程序员可以快速上手Python。
摘要由CSDN通过智能技术生成

Python 脚本在一些 iOS 开源项目中可见,经常用于自动配置等,具有上手快速,内置功能丰富等功效,macOS 也内置了 Python 2.7.10,目前在编程语言排行榜上排名第5(2017年三月份),可见其地位。

本篇的目标是让完全不懂Python的小伙伴对着能看懂*.py文件中的代码,你可以收藏本篇,作为精简的Python手册,随时查阅。

查看当前Python版本

在“终端”中输入$符号后的命令:

$python --version

Helloworld

print "hello, world!"

完整例子

#!/usr/bin/env python

# -*- coding: utf-8 -*-

class Person:

def setName(self, name):

self.name = name

def getName(self):

return self.name

def greet(self):

print "Hello, world! I'm %s." % self.name

aPerson = Person()

aPerson.name = "XiShiiOS"

aPerson.greet()

执行文件

用文本编辑器将以上代码保存为Demo.py,然后在“终端”中执行以下步骤:

$cd [Demo.py所在目录]

$chmod a+x Demo.py

$./Demo.py

与OC语言的最大不同

没有大括号{}。

没有分号;。

缩进,缩进,缩进是代码块的分界。

注意:用4个空格来缩进代码

绝对不要用tab, 也不要tab和空格混用。

——《谷歌Python编码规范 Google Python Style Guide》

没有switch语句。

逻辑运算

对应 C语言的&&(与),||(或),!(非),Python 的逻辑运算符为: and, or, not

nil

Python中用 None 来表示 nil 和 Null。

使用中文

头部声明 # -*- coding: utf-8 -*-

定义“人”类:

class Person

def setName(self, name):

self.name = name

def getName(self):

return self.name

def greet(self):

print "Hello, world! I'm %s." % self.name

关键字class相当于@interface,作为一个类定义的开头。

方法定义(ObjC 里称函数为方法,本篇遵循 ObjC 的命名)以 def 关键词开头,后接方法标识符名称和圆括号()。

实例方法的一个参数总是self,指代当前类(实例)本身,但self这个名字是可改的。

关于第三点,下面举个例子,以下是错误的类函数声明:

class Person

def fun():

print "just a fun."

// ...

aPerson.fun()

运行后会输出错误,表示调用时隐式传了一个参数,你却没实现:

Traceback (most recent call last):

File "./Demo.py", line 23, in

aPerson.fun()

TypeError: fun() takes no arguments (1 given)

而以下声明是可以的,myself 代替了 self:

def fun(myself):

print "just a fun.%s" % (myself.__class__)

// ...

aPerson.fun()

运行结果:just a fun.__main__.Person

不过尽量遵循self这样的“公约”,避免给自己找麻烦。

继承

定义一个“程序员”类,继承自Person类:

class Programmer(Person):

def setUsingLanguage(self, language):

self.language = language

def getLanguage(self):

return self.language

def greet(self):

print "Hello, world! I'm %s, I use %s language." % (self.name, self.language)

aProgrammer = Programmer()

aProgrammer.name = "XiShiiOS" #设置父类属性

aProgrammer.language = "ObjC" #设置子类属性

aProgrammer.greet() #调用子类方法,覆盖父类同名方法

运行结果

引用模块

#方法1

import math #引用模块math

math.sqrt(9) #需要使用模块名

#方法2

from math import sqrt #指定使用math中的sqrt方法

sqrt(9) #可以省略模块名

数组的替代物

不可变数组:元组

类似NSArray,Python使用tuple表示一组静态值:

tuple1 = ('physics', 'chemistry', 1997, 2000);

tuple2 = (1, 2, 3, 4, 5 );

tuple3 = "a", "b", "c", "d";

可变数组:列表

类似NSMutableArray,Python使用list表示可变数组:

list1 = ['physics', 'chemistry', 1997, 2000];

list2 = [1, 2, 3, 4, 5 ];

list3 = ["a", "b", "c", "d"];

数组遍历

fruits = ['banana', 'apple', 'mango']

for fruit in fruits:

print '当前字母 :', fruit

检查自己是否为主入口

if __name__== "__main__":

main()

这段代码利用了魔法方法__name__,判断当前程序的名称是否为主函数,以此来让脚本判断自己是被当做模块调用,还是被直接运行的。当被import作为模块调用的时候,__name__返回的是模块名,而不是 "main",if以下的main()函数不会被执行。

魔法方法

两个下划线包围来命名,由Python系统自动调用,如aProgrammer = Programmer() 实例化时,会自动调用__init__(self)

调用父类方法:

为了使用 super 方法,改写 Person 的声明:

class Person(object):

def __init__(self):

print "我首先是人类"

声明 Person 继承于基类 object ,这样才能使用 super :

class Programmer(Person):

def __init__(self):

super(Programmer, self).__init__()

print "我是程序员"

super 的调用格式为:

super(当前类名, 当前实例名).父类方法名()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值