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

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

浙江省已经将信息技术课程纳入了高考,编程语言是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)

#这些可以直接作用于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")

Hi

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方法前打印日志。

...def say():

...print('hello')

call say():

hello

java达人

ID:drjava

(扫码或长按识别)

本文来自企鹅号 - java达人媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量化投资与机器学习

【最新解读】Ray Dalio——中美之间的误解、争议和战争

This evolutionary cycle is not just for people but for countries, companies, eco...

872
来自专栏C语言及其他语言

[每日一题]DNA

又到了今天C语言在线学习平台推送每日一题的时间了,今天分享的题目可能有点难,但我还是希望大家能够理解,这样以后遇到这样的问题也就不会害怕了 题目描述 小强从小...

2913
来自专栏北京马哥教育

7个案例15分钟让你了解Python套路!

古人云:书山有路勤为径 学海无涯苦作舟 。 注:一般标榜着 “ XX天学会XX”、“ XX 分钟了解XX”的文章都不会是让你增长功力的文章,如本文。 随着互联...

3796
来自专栏计算机视觉与深度学习基础

Leetcode 188 Best Time to Buy and Sell Stock IV

Say you have an array for which the ith element is the price of a given stock o...

22010
来自专栏编程心路

从王者荣耀看设计模式-策略模式(java版)

曾经我也是一名玩农药的大学生,但现在已经弃了,别问我为什么(被坑爹队友坑的哭。。。)。而今天我们来把让农药变荣耀,我们来从王者荣耀中看设计模式的策略模式。

1665
来自专栏海天一树

我是如何成为一名少儿编程竞赛老师的

2017年9月,我以前一个同事问我能不能教他小孩Theo学习编程,因为以前在同一家公司时,我那同事经常带Theo去公司,我和Theo也认识,所以我答应了。

2254
来自专栏青青天空树

挖掘机技术哪家强(c++实现)

描述:为了用事实说明挖掘机技术到底哪家强,组织一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

881
来自专栏java一日一条

程序员才看得明白的面试圣经

除了直接申请面试以外,一般说来,还有两种途径来获得面试的机会:由现在的雇主推荐,或者通过LinkedIn。虽然前者会快一些、更尊敬一些,但后者很可能是大部分应聘...

1121
来自专栏数据结构与算法

1009. 分配任务

1009. 分配任务 (Standard IO) 时间限制: 1000 ms  空间限制: 262144 KB  具体限制  题目描述 在社会实践活动中有三项...

2414
来自专栏calmound

匈牙利算法

今天学习了下匈牙利算法,发现这个早在几个月前学过的知识已经忘记的一干二净了,记得当初学习的时候只是看书,看论文,现在要好好的总结下,防止以后再次忘记。 此次总结...

4427

扫码关注云+社区

领取腾讯云代金券