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

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

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

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏calmound

匈牙利算法

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

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

1009. 分配任务

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

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

P1070 道路游戏

题目描述 小新正在玩一个简单的电脑游戏。 游戏中有一条环形马路,马路上有 n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点,...

31060
来自专栏专知

【LeetCode 344】关关的刷题日记26 Reverse String

关关的刷题日记26 – Leetcode 344. Reverse String 题目 Write a function that takes a string...

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

Day2下午解题报告

预计分数:100+100+30=230 实际分数:100+100+30=230 人品爆发&&智商爆发&&手感爆发 T3数据好水,,要是把数组开大一点的话还能多得...

27740
来自专栏海天一树

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

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

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

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

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

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

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...

237100
来自专栏青青天空树

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

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

10010
来自专栏小樱的经验随笔

Java面向对象抽象类案例分析

1 /** 2 雇员示例: 3 需求:公司中程序员有姓名,工号,薪水,工作内容 4 项目经理除了有姓名,工号,薪水还有奖金,工作内容 5 对给出需求进...

29640

扫码关注云+社区

领取腾讯云代金券