或许,这会是全民皆知的一门编程语言
不久前,国务院印发了《新一代人工智能发展规划》,其中明确指出,要实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。
浙江省已经将信息技术课程纳入了高考,编程语言是VB,教育部考试中心于2017年10月11日发布了“关于全国计算机等级考试(NCRE)体系调整”的通知,决定自2018年3月起,在计算机二级考试加入了“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]
4、Generator
>>> 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对象:
5、map/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
decorator在Python中使用@符号作用于函数或类,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,如下例,在调用say方法前打印日志。
>>> @log
... def say():
... print('hello')
>>>say()
call say():
hello
java达人
ID:drjava
(扫码或长按识别)