机器学习之python基础(三)

  机器学习之python基础(三)



综述  

这一系列博客是记录我在学习python和机器学习的过程中的一些实践过程和体会,学习python时用到的参考书籍是《python学习手册 第四版》,即《learning python》的中文版。学习机器学习时所用的主要参考书籍是《机器学习实战》,还参考了CSDN博客平台上博客名为zouxy09的部分博客文章(博客后面附有url链接),实现其中的各种算法所使用的程序语言是python,实验平台是Ubuntu14.04,所使用的python版本是2.7.6。如果有博友想要与我进行交流可以在博客后面留言,或者发邮件到我的邮箱zouchaobin@foxmail.com。 由于python3.0以后的版本与python3.0之前的版本有较大改变,所以为了某些代码的兼容性(如print函数),也为了便于直接使用《python学习手册》中的源代码(这本书的源代码是基于python3.x的),我决定采用以下处理方式:
from __future__ import print_function
from __future__ import division
在每个代码文件的开头加入以上两行代码,这样的话就可以使用python3.x的print函数和除法运算了,这样便于将这些代码稍加修改就能移植到python3.x的平台上。


python函数

函数是将一些语句集合在一起的部件,它们能够不止一次的在程序中运行,有的可以接受参数的传入,有的还包含返回值。

python中有许多的内置函数,用户可以直接调用,比如文件操作函数open(),write(),read()等,用户也可以根据需要自定义函数,但是需要遵守一定的规则。




def语句

python使用def来创建一个对象并将其赋值给某一变量名(函数名),从而生成函数,def在python中是一条可执行的语句,不像C语言,在运行def之前函数并不存在,运行def以后才产生函数。当然,也可以使用lambda来创建一个匿名的函数。
def <function_name>(arg1, arg2, arg3,...)

......(函数体)

......

return <value>


实例:
# -*- coding: utf-8 -*- 
from __future__ import print_function
from __future__ import division

#提出两个序列的交集部分
def intersect(seq1, seq2):
	res = []
	for x in seq1:
		if x in seq2:
			res.append(x)
	return res

s1 = 'spam'
s2 = 'scam'
print(intersect(s1,s2))

#就算是两个不同类型,不同长度的序列也可以实现同样的功能
#下面就是一个元组和一个列表相同元素的提取
print(intersect((1, 2, 3, 4), [4, 3, 6, 7, 8, 2]))

运行结果如下:




global语句

global语句用于声明变量的作用域,它并不是一个类型或者大小的说明,是一个命名空间的声明。总结如下:
1,全局变量是位于模块文件内部的顶层的变量名。
2,全局变量如果实在函数内被赋值的话,必须经过声明(否则会生成函数内部的同名局部变量)。
3,全局变量在函数的内部不经过声明也可以被引用,但是不能赋值。
以下实例用法说明来在函数定义时的global用法,更多关于作用域的说明请参考《python学习手册》第四版。
# -*- coding: utf-8 -*- 
from __future__ import print_function
from __future__ import division

x = 0

#operate1()中声明了x是全局变量,所以函数中修改x的值会
#修改全局变量x的值
def operate1():
	global x
	x = 1

#operate2()中并没有声明x是全局变量,
#所以operate2()中的x只是函数的局部变量,修改x并不影响全局变量x的值
def operate2():
	x = 2

#对于operate3(),这是一个嵌套作用域的例子,函数operate3()
#中又调用def语句生成了一个函数来打印x,在这种情况下,
#函数func所引用的x来源于函数operate3()的作用域
def operate3():
	global x
	x = 3
	def func():
		print(x)


print('before operate:',x)

operate1()
print('after operate1:',x)

operate2()
print('after operate2:',x)

operate3()
print('after operate3:',x)


运行结果如下:


python提供了lambda语句来生成不带函数名字的匿名函数,lambda是一个表达式,而不是一个语句,lambda的主体是一个单个的表达式,而不是一个代码块:
# -*- coding: utf-8 -*- 
from __future__ import print_function
from __future__ import division

def func():
	x = 4
	y = (lambda n:x ** n)
	return y

a = func()
print(a(2))
运行结果如下:



另外还有带参数的函数,本博客的第一个实例便是最简单的带参数的函数,另外函数还有许多高级话题,此处按下不表。
























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙漏AI机器人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值