欢迎使用CSDN-markdown编辑器

Q:python中“函数”这个概念是什么东西?

A:
与其他编程语言的“函数”一样,python中的 “函数”也是一些可以完成某些功能的代码片段。我们秩序在需要使用函数的地方调用函数,并提供必须的原材料(参数),就可以得到想要的结果。

有了函数,我们可以把解决某一类特定问题的对应的代码打包起来,想用的时候就直接拿来,而不必再次编写同样的代码。一次编写,多次使用,体现了程序员“懒惰”的美德。

Q:如何创建一个函数?

A:
考察一个例子——

def add(x, y):                #求两数相加的和的函数
    return x + y               #返回x+y的和

def max(x, y):                 #求两数的最大值
    if x > y:
        return x                   #若x大则返回x
    elif y > x or y == x:
        return y                   #若y大则返回y

z1 = add(2, 3)
z2 = max(2, 3)
print z1
print z2

#输出:
#5
#3

一个函数的构造就是使用def关键字,后面接着函数的名字,接着是一个括号,里面是函数运行时需要用到的数据,最后是一个冒号,然后在函数体里面写代码。
def functionName(argument1, argument2,...): #定义函数,名为functionName,需要用到参数argument1,argument2......

调用函数时只需要写出函数名,并且提供相应的参数即可。函数大多会返回一些值,就好像我们使用数学中的函数一样,当我们把”x = 3”代入函数“f(x) = 2 * X + 1”一样会得到计算结果2 * 3 + 1 = 7。

如此看来,其实编程学科里的“函数”,和数学中的“函数”,可以说是一样的。此“函数”即彼“函数”。

Q:使用函数时有没有那些特别的技巧?

A:
1、定义方法时的需要的参数个数可以是可变的。

def add(*args):
    print args
    for x in args:
        sum += x

print add(1,2,3)                    #输出结果: (1,2,3)   6
print add(1,2,3,4,5,6)           #输出结果 : (1,2,3,4,5,6)   21

在这段代码里,add的括号里的参数是“*args”,而在调用这个函数时,可以传入不定个数的参数。这些参数在传入过程中会在python内部打包成一个元组,储存在args变量里。所以在代码中print args时会打印出一个元组。

2、函数可以嵌套,函数可以返回另一个函数。也就是说函数内部可以再定义一个函数,然后外层函数把内层函数当作返回值返回给调用外层函数的代码段。这就是“函数式编程”。python中的装饰器就是函数式编程的一种应用。作为一种高度抽象的编程技术,我也不怎么懂······

Q:听说python是一门面向对象编程语言,那么它和Java这些纯面向对象编程语言有什么异同吗?

A:
python和Java最大的不同在于Java的代码必须全部写在类里面,通过调用某个代码文件的main方法来调用其他方法,如此实现程序的运行;python 则不必如此,毕竟它是一种脚本语言,可以存在不在类里面的指令。程序的运行,一般而言,也是从头到尾一条一条指令运行的。

python和Java的相同在于两者面向对象的成分都大同小异,都有类、对象、封装、继承、多态、接口这些面向对象程序设计的基本概念,实现起来的方式也差不多。不过python支持多重继承。

类就是一张图纸,我们根据图纸来创建实例(对象)

Q:一个python类是什么样子的?

A:
看看下面的例子——

class Person(object):       #定义一个类,名为Person,继承自类object
    def __init__(self, name, gender, salary, age):        #构造函数
        self.name = name                              #创建实例变量并复制       
        self.gender = gender        
        self.__salary = salary                       #变量名前有两根下划线,是私有变量
        self.__age = age    

    def print_salary_age(self):          #一个打印salary和age的私有方法
         print 'salary:'+self.__salary+' age: '+self.__age

    def describ_self(self):                       #类中每个方法都必有一个参数self
        print 'name: '+self.name+' gender: '+self.gender        
        self.print_salary_age()

这就是一个典型的,简单的例子。可以这样使用一个类——

man = Person('Tom','male','10000','20')
Tom.describ_self()
print Tom.name
print Tom.gender

#输出
#name: Tom gender: male
#salary:10000 age: 20
#Tom
#male

python类通过关键字“class”定义,后面加类名,类名后跟这一个括号,里面是这个类的父类的类名。python3里默认所有类都继承自object类。python2则需要显式声明。

一个定义在类里面的函数可以称为方法,凡是方法,在定义时必须在括号里写上一个参数self,这个参数是对象自己的引用,我们在类中如果要使用某个实例变量,需要用self.variable来访问,而调用类里面某个方法时需要self.method()。我们在调用类的方法时不需要传入self,只需要传入剩余的参数即可。self由python自己传入。

本例创建了一个Person类,通过构造方法init来初始化Person的实例,给其赋予实例变量(在Java中称类的属性)。实例变量的添加可以不在init方法完成,但一般来说都使用init初始化。

类中变量名前带双下划线的变量,如__variable,是类的私有变量。私有变量只能在类内部被使用,类外部的代码不能使用类的私有变量。私有方法的定义和使用同私有变量。

函数以及类-对象是编程中抽象艺术(隐藏细节、分离设计与实现)的体现,还有更多机制和功能等待我们探索。


2016-10-8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值