不知不觉中,我已经成为一名研究生了,看了看自己的博客,距离上一次学习也快有2年了。但是巧的是,随着课题的进行,我发现需要用到python来进行程序的编写。果然,你学过的任何东西都是有用的,这真是既高兴又悲伤啊!
之前内容的更新
在python3.6版本之后,在字符串中使用变量就可以采用一种更为简单的方式。
one = "asd"
two = "fgh"
three = f"this is {one} and {two}"
print(three)
#result: this is asd and fgh
元组 与列表相同,但其内的值不可以修改。用小括号定义。
name = ("asd",12)
下面进入正题
函数
- 定义
下面定义一个简单的函数。
def nihao():
print("hello!")
它的调用与C语言一样。
nihao()
- 传参
带参数的函数。同C语言一样,也分为形参和实参。
def nihao(name,tem):
print(f"welcome!{name}")
print(f"you say {tem}")
nihao('skk','hello')
为了防止出错,python中还有另外一种传参的方式。
nihao(name='skk',tem='hello')
nihao(tem='hello',name='skk')
这一种传参无所谓参数的先后顺序,它产生的结果是一样的。
- 默认值
默认值的指定必须按照参数的位置,从后往前赋值。
def nihao(name, tem='hello' ):
print(f"welcome!{name}")
print(f"you say {tem}")
#错误指定
#def nihao(name='skk', tem):
调用时,若直接省略,则函数就会自动调用默认值。
nihao('skk')
nihao(name='skk')
- 返回值
这个也比较简单,只需要在函数最后加上一个return即可。返回值的类型是任意的。
def nihao(name, tem):
print(f"welcome!{name}")
ret='fanhui'
return ret
- 传递任意数量的参数
如果预先不知道要传递多少个实参,就可以采用以下的方法。
def nihao(*name):
print(f"{name}")
nihao('skk')
nihao('skk','skkk','sk')
*name
是表示在python内创建一个空的元组。若想要创建一个字典,就需要改变一下形式。
def nihao(**name):
print(f"{name}")
nihao(name='skk',location='china')
- 函数存储和导入
编写的函数如果都放在主文件中,就会显得杂乱不美观。为此,我们通常将函数在另一个.py
文件中,然后在主文件中引用它。但引用时,需要在前面加上引用的文件名。
import test.py
test.nihao()
如果只是想导入文件中特定的函数话,可以采用下面这种方式。以这种方式导入的函数可以直接使用。
from test.py import nihao,nihao1
nihao()
nihao1()
如果引用的名字太长,也可以给其指定别名。
#给模块指定
import test.py as t
t.nihao()
#给函数指定
from test.py import nihao as ni
ni()
也可以在主文件中导入所有函数,这样也可以不用带文件名。
from test.py import *
nihao()
类
C语言是一种面向过程的编程,没有类的概念;但是在C++、C#、python等语言中都引入的类的概念,是一种面向对象的编程。类的引入使得编程的效率大大提高。
约定,python中类的首字母用大写。类内分为属性和方法,简单来说,属性就是变量,方法就是函数。
class Person:
#属性
name='skk'
color='red'
age='24'
#方法
def who(self):
print(f"{self.name}")
这里这个self
的不需要传值,当你调用这个类生成一个实例时,它会自动将这个实例传入self
,然后生成你所创建的这个实例的属性和方法,就像是将一个通用的虚拟东西实体化为你所创建的这个特定的实例。
class Person:
name='skk'
def who(self,nam):
self.name=nam
print(f"{self.name}")
#调用
a=Person()
a.who('sd')
#result:sd
在调用类时,还会有一些自动运行的函数。
class Person:
def __init__(self, name, age):
self.name=name
self.age=age
a=Person('sd',24)
以上程序在运行时就会自动调用__init__
(双下划线)这个函数,并将相应的变量赋值。
要修改类中属性的值一般有2种方法。
class Person:
def __init__(self, name, age):
self.name=name
self.age=age
a=Person('sd',24)
a.age=30
这种是直接修改属性的值。
class Person:
def __init__(self, name, age):
self.name=name
self.age=age
def update(age):
self.age=age
a=Person('sd',24)
a.update(30)
这种就是通过调用方法来修改属性的值。一般建议采用调用方法来修改,这样还可以在方法内进行其它额外的操作。
扩展内容
由于python的特性使得无法像C++那样将属性值分为公有和私有,也就是说,类内的属性值都可以直接修改。为了解决这种情况,python采取了一种名字改编的方式。就是在属性前加上两个下划线,这样在创建实例类时,就无法通过简单的变量名来修改其内的值。但实际上是python将这个变量名改变成为
_类名__属性名
,也就是说可以通过这个方法在外部改变其值。
class Person:
__name='skk'
def up_name(nam):
self.__name=nam
a=Person()
#方法一
a.up_name('sk')
#方法二
a._Person__name='sk'
好了,本次的内容就先讲到这里吧~~
(未完待续)