您的位置:首页 > 编程语言 > Python开发

python复习笔记[7]——函数

2017-02-21 19:27 363 查看


函数使用示例:

#
函数定义:
# def functionname( parameters ):
#   
"文档字符串"
#   
函数体
#   
return [expression]
 
def add(a, b):
   
c = a + b;
   
return c;
 
#
函数调用
m = add(1, 2);
print m;   
# 输出:3
 
"""
可更改(mutable)与不可更改(immutable)对象:
在 python
中,strings, tuples,
和 numbers
是不可更改的对象,而 list,dict
等则是可以修改的对象。
   
不可变类型:变量赋值 a=5
后再赋值 a=10,这里实际是新生成一个 int
值对象 10,再让 a
指向它,
              
而 5
被丢弃,不是改变a的值,相当于新生成了a。
   
可变类型:变量赋值 la=[1,2,3,4]
后再赋值 la[2]=5
则是将 list la
的第二个元素值更改,本身la没
            
有动,只是其内部的一部分值被修改了。
 
python
函数的参数传递:
   
不可变类型:类似 c++
的值传递,如
整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。
              
比如在 fun(a)内部修改
a 的值,只是修改另一个复制的对象,不会影响 a
本身。
   
可变类型:类似 c++
的引用传递,如
列表,字典。如 fun(la),则是将
la 真正的传过去,修改后fun外部的
            
la也会受影响
"""
 
#
不可变类型传参
def swap(a, b):
   
c = a;
   
a = b;
   
b = c;
   
return;
a, b = "1", "2";
swap(a, b);
print a, b;   
# 输出:1 2

 
def changeText(text):
   
text += "_changed";
   
return;
text = "a";
changeText(text);
print text;   
# 输出:a
 
#
可变类型传参
list1 = [1, 2, 3];
print list1;   
# 输出:[1, 2, 3]
def addEle(l, ele):
   
l.append(ele);
   
return;
addEle(list1, 4);
print list1;   
# 输出:[1, 2, 3, 4]
 
#
关键字参数
def saySomething(person, words):
   
print person, "says", words;
   
return;
saySomething(person = "Daniel", words = "Hello!");   
# 输出:Daniel says Hello!
saySomething(words = "Hello!", person = "Daniel");   
# 输出:Daniel says Hello!
 
#
默认参数
def saySomething(person, words = "nothing"):
   
print person, "says", words;
   
return;
saySomething("Daniel");   
# 输出:Daniel says nothing
 
#
定义不定长度参数
def printInfo(arg1, *args):
   
print arg1;
   
for arg in args:
       
print arg;
   
return;
printInfo("a", "b", "c", "d");
#
输出:
# a

# b
# c
# d
 
def add(num1, num2, *nums):
   
result = num1 + num2;
   
for num in nums:
       
result += num;
   
print result;
   
return result;
add(1, 2, 3, 4, 5);
#
输出:15
 
# lambda表达式(匿名函数):
# lambda [arg1 [,arg2,.....argn]]:expression
average = lambda arg1, arg2: (arg1 + arg2) / 2.0;
print average(3, 4);   
# 输出:3.5
 
#
不带参数值的return语句返回None
#
变量作用域分为全局变量和局部变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息