三行代码实现python版本的sprintf函数

 sprintf是c语言里面的一个函数,调用方式为sprintf(char *dest_str, char *format_str, arg1, arg2),可以将格式化之后的字符串存到dest_str,dest_str是需要实现声明的,例如下面的程序:

#include <stdio.h>

int main(int argnum, char *args[])
{
    char s[100];
    sprintf(s, "%i + %i is %i", 1, 2, 3);
    return 0;
}

运行结果是s的内容为字符串“1 + 2 is 3”,如果要用python实现一个相同版本的函数该如何做呢?要求python版本的函数和c版本函数的参数要一致。当然可以有很多种做法,但是下面这种只用了三行代码,简单容易理解:

def sprintf(s, fs, *args):
    global s
    s = fs % args

if __name__=="__main__":
    s = ""
    sprintf(s, "%i + %i is %i", 1, 2, 3)

上面代码运行后s的内容和c语言版本是一致的,有几个知识点需要注意下,一是函数里面用了global声明s是一个全局变量,如果不声明,那么s只是在函数内有效,对s的改动不会对原来的值有影响,这是python里面没有引用和指针的功能,传入函数的参数,如果是不可变对象,传递的是拷贝的值,不可变对象包括int、float、string、tuple等类型,而如果是可变对象,传递的是引用,对参数的修改会影响原来的对象,list是可变对象。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boldyoungster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值