函数
1. 有 参数, 返回值
>>> def add(x):
x=x+1
return x
>>> add(3)
4
>>> a=add(2)
>>> a
3
>>> print a
3
2. 默认参数
>>> def f(arg1,arg2=2,arg3=3):
print 'arg1 = ', arg1
print 'arg2 = ', arg2
print 'arg3 = ', arg3
>>> f(1)
arg1 = 1
arg2 = 2
arg3 = 3
>>> f(1,3,3)
arg1 = 1
arg2 = 3
arg3 = 3
3. 递归
"""非递归方式呈现"""
sum = 0
for obj in range(1,101):
sum+=obj
print sum
""""1+2+3+...+100"""
def foo(n):
if n>0:return n+foo(n-1)
if n<=0:return 0
print foo(100)
"""阶乘"""
def fac(n):
if n==0 or n==1:
return 1
else:
return n*fac(n-1)
print fac(10)
Python实现递归遍历文件夹目录
#! /usr/bin/python
# filename : scandir.py
import os
def scandir(startdir, target) :
os.chdir(startdir)
for obj in os.listdir(os.curdir) :
if obj == target :
print os.getcwd() + os.sep + obj
if os.path.isdir(obj) :
scandir(obj, target)
os.chdir(os.pardir) #!!!
startdir = raw_input('Please input startdir: ')
target = raw_input('Please input target: ')
scandir(startdir, target)
'''
os.chdir()——改变目录到指定目录
os.curdir:返回当前目录('.')
os.listdir()返回指定目录下的所有文件和目录名
os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径
os.sep 可以取代操作系统特定的路径分割符
os.pardir 获取当前目录的父目录字符串名:('..')
os.path.join(path,name):连接目录与文件名或目录
'''
参考自: http://blog.chinaunix.net/uid-26137687-id-2183259.html
4. 嵌套函数
def f():
char='hello'
print char
def f1():
print "world"
f()
结果:
>>> f1()
world
hello
5. for 循环
for a in [3,4.4,'life']:
print a
idx = range(5)
print idx
结果:
idx是[0,1,2,3,4]
for a in range(10):
print a**2
结果:
>>>
0
1
4
9
16
25
36
49
64
81
for i in range(10):
if i == 2:
continue
elif i==5:
break
print i
结果;
>>>
0
1
3
4
a = ['cat', 'window', 'defenestrate']
for x in a:
print x, len(x)
for x in a[:]: # make a slice copy of the entire list
print x,len(x)
结果:
>>>
cat 3
window 6
defenestrate 12
cat 3
window 6
defenestrate 12
字符串
strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2
print sStr1
结果:
>>>
strcpy
strcpy2
strcat(sStr1,sStr2)
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1
strchr(sStr1,sStr2)
#strchr(sStr1,sStr2) 查找字符< 0 未找到
sStr1 = 'strchr'
sStr2 = 's'
nPos = sStr1.index(sStr2)
print nPos #0
将字符串中的大小写转换
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
#sStr1 = sStr1.lower()
print sStr1 #JCSTRLWR
追加指定长度的字符串
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1 #12345abc
查找字符串
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)# 2
分割字符串
s = 'ab,cde,fgh,ijk'
print(s.split(','))
#['ab', 'cde', 'fgh', 'ijk']
参考自: http://www.jb51.net/article/47956.htm
os模块
http://www.jb51.net/article/57995.htm
局部变量和全局变量
在Python中的任何变量都有其特定的作用域,比如在一个函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量;比如在一个文件顶部定义的变量可以供该文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。
上面是从空间的角度来考察变量的局部性和全局性,如果从时间的角度来看,不妨简单地认为在程序运行的整个过程中,全局变量一直占据着内存,并且它的值可以供所有函数访问;而局部变量则是只有在其所在函数被调用时才给它分配内存,当函数返回时,其所占内存就会被释放,所以它只能供其所在的函数所访问——换句话说,当某个函数退出时,其局部变量原先所占的内存将被分配给其它函数的局部变量。打个不太贴切的比方,全局变量就好比您自己买的房子,通常一家人要在那里住上好几十年,如果我要找您要债,我会老往您家里跑;而局部变量好像旅馆,今天您租住这件房间,我可以到这个房间来找您,但是到明天再来这间房间的话,找到的可能就是别人了。
# -*- coding: cp936 -*-
#定义全局变量
globalInt = 9
#定义一个函数
def myAdd():
<span style="white-space:pre"> </span>localInt = 3 #在函数中定义一个局部变量
<span style="white-space:pre"> </span> return globalInt + localInt
#测试变量的局部性和全局性
print myAdd() //12
print globalInt //9
<span style="white-space:pre"> </span>print localInt //<span style="color: rgb(51, 51, 51); font-family: 宋体; font-size: 14px; line-height: 28px; text-indent: 28px; background-color: rgb(248, 248, 248);">错误提示说“localInt”没有定义</span>
# -*- coding: cp936 -*-
#定义全局变量
a = 'hello'
print '全局变量a =', a
#定义一个函数
def f():
global a #将变量a声明为全局变变量
a = 'byby'
print '函数f()中的变量a =',a
#测试变量的局部性和全局性
f()
print '全局变量a =', a
结果:
>>>
全局变量a = hello
函数f()中的变量a = byby
全局变量a = byby