C语言基础上学python---3

 
  不知不觉中,我已经成为一名研究生了,看了看自己的博客,距离上一次学习也快有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'

  好了,本次的内容就先讲到这里吧~~
                                (未完待续)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值