或许,这会是全民皆知的一门编程语言

或许,这会是全民皆知的一门编程语言

不久前,国务院印发了《新一代人工智能发展规划》,其中明确指出,要实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。

浙江省已经将信息技术课程纳入了高考,编程语言是VB,教育部考试中心于20171011日发布了关于全国计算机等级考试(NCRE)体系调整的通知,决定自20183月起,在计算机二级考试加入了“Python语言程序设计科目。接着,早先的风声又进一步传开,Python将代替VB进入浙江省信息技术高考。

浙江省估计起的是一个带头示范作用,其他省份也会有所行动,山东省最新出版的小学信息技术六年级教材也加入了 Python 内容。也就是说,现在的学生,至少从高中开始就学习编程了,如果家长重视这方面的培养,估计会学得更早。Python这门语言,一旦被纳入高考指挥棒的麾下,家长关心,学生牢记,更重要的是,在实际工作中,发挥着巨大的作用,可能会贯穿很多人的一生,而不是考完就忘的节奏。

python属于动态类型语言,相对于java静态类型语言,开发灵活方便,同时有大量免费的库可用,在网络爬虫、数据分析、运维、测试等多个领域起着巨大的作用,随着人工智能的兴起,python更是随着这股热潮而大展宏图。

作为java程序员,不能落后于时代的潮流,其实python学习对于有编程基础的人而言是相对简单的,主要是一些高级特性的理解和运用,至于某些库的使用可以在实际工作中慢慢摸索,不必过早投入。以下是python的一些高级特性,大部分都在里面了,一个熟练的java程序员了解这些,马上就可以上手开发了。

1、切片

>>>L = list(range(100))

>>>L[0:10]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2、迭代器

>>>for ch in 'ABC':

  ...print(ch)

A

B

C

3、列表生成式

>>>[x * x for x in range(1, 5)]

[1, 4, 9, 16]

4Generator

>>> g = (x * x for x in range(1,3))

>>> next(g)

1

>>> next(g)

4

#如果算法比较复杂,可使用带有yield的函数

>>> def fibonacci_generator():

...     a, b = 0, 1

...     while True:

...         yield a

...         a, b = b, a + b

# fibonacci_generator()是一个generator(),为避免多次调用next(),使用for循环

>>> for i in fibonacci_generator():

...     if i > 100:

...         break

...     print(i)

0

1

1

2

3

5

8

13

21

34

55

89

#这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以使用isinstance()判断一个对象是否是Iterable对象:

5map/reduce

>>> def f(x):

...   return x * 2

>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> list(r)

[2, 4, 6, 8, 10, 12, 14, 16, 18]

>>> def add(x, y):

...   return x + y

>>> reduce(add, [1, 2, 3, 4, 6])

16

另外还有filter,sorted函数

6、闭包,返回闭包时注意:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

>>> def return_func_that_prints_s(s):

...     def f():

...             print s

...     return f

...

>>> g = return_func_that_prints_s("Hi")

>>> h = return_func_that_prints_s("Hello")

>>> g()

Hi

>>> h()

Hello

7、装饰器

decorator简单来说就是一个方法,它接收一个方法作为参数,并且返回一个方法,如下例的log方法。

>>> def log(func):

...     def wrapper(*args, **kw):

...         print('call %s():' % func.__name__)

...         return func(*args, **kw)

...     return wrapper

decoratorPython中使用@符号作用于函数或类,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,如下例,在调用say方法前打印日志。

>>> @log

...    def say():

...      print('hello')

>>>say()

call say():

hello

java达人

ID:drjava

(扫码或长按识别)

或许,这会是全民皆知的一门编程语言